isinstance/type/issubclass的用法,反射(hasattr,getattr,setattr,delattr)
2024-09-01 02:13:15
1.isinstance/type/issubclass
1.type
显示对象的类,但是不会显示他的父类
2.isinstance
会显示的对象的类,也会去找对象的父类,填写参数是对象,类isinstance(对象,类)如果对象属于后面的类会报Ture,反之False
3.issubclass
与isinstance 相似不过他填写的参数是类与类
4.总结
来说:type(对象)不会认为子类是一种父类类型;isinstance(对象,类)会认为子类是一种父类类型。
2.反射(hasattr,getattr,setattr,delattr)
反射就是通过字符串来操作类或者对象的属性
反射本质就是在使用内置函数,其中反射有以下四个内置函数:
1. hasattr:判断一个方法是否存在与这个类中
2. getattr:根据字符串去获取obj对象里的对应的方法的内存地址,加"()"括号即可执行
3. setattr:通过setattr将外部的一个函数绑定到实例中
4. delattr:删除一个实例或者类中的方法
1.hasattr
用法: print(hasattr(对象,对象的方法或者特征),)后面内容必须为字符串的格式,如果有返回True,没有返回False
2.getattr
简单的用法:print(getattr(对象,对象的方法或者特征)),后面内容必须为字符串的格式,后面的内容必须对象有的,也返回其特征对应的内容
详细的用法
:
getattr(实例化的类, '属性或者方法','没有找到属性或者方法返回的内容')
如果没有填写
没有找到属性或者方法的返回内容
他会抛异常如果到了属性或者方法,其的返回值就是他的属性或者方法
示例
class A:
def __init__(self):
self.name = 'nick'
# self.age='18'
def method(self):
print("method print")
return 111
a = A()
print(getattr(a, 'name','not find')) # 如果a 对象中有属性name则打印self.name的值,否则打印'not find'
print(getattr(a, 'age','not find')) # 如果a 对象中有属性age则打印self.age的值,否则打印'not find'
print(getattr(a, 'method', 'default')) # 如果有方法method,否则打印其地址,否则打印default
print(getattr(a, 'method', 'default')()) # 如果有方法method,运行函数并打印接受他的返回值否则打印default
3.seattr
用法:setattr(YwY,',对象的方法或者特征,对应的值) , 如果没有该特征或者方法会新增,如果有则替换
4.delattr
用法:delattr(YwY,',对象的方法或者特征),删除对象拥有的方法或者特征
最新文章
- 你所不知道的setTimeout
- 常用兼容浏览器js
- HDU 1564 Play a game(巴什博弈)
- NCPC 2015 October 10, 2015 Problem D
- protocol buffer
- 图集cancelButtonIndex,发送通知简洁写法
- How can I style a JavaFX SplitMenuButton in CSS
- Ubuntu ENet 的下载和编译
- 简单http笔记
- shell 中函数放回字符串问题
- php接收二进制数据流转换成图片
- 快速构建Windows 8风格应用22-MessageDialog
- 百度地图API的自动定位和搜索功能(移动端)
- Android Weekly Notes Issue #253
- [转]微信小程序实现图片上传功能
- LVS结合keepalive
- 用python从符合一定格式的txt文档中逐行读取数据并按一定规则写入excel(openpyxl支持Excel 2007 .xlsx格式)
- JS数据的基本类型
- [Wannafly挑战赛28][B msc和mcc][预处理+枚举]
- 找不到类SimpleJdbcTemplate ParameterizedRowMapper cannot be resolved
热门文章
- Windows+Idea安装Hadoop开发环境
- 如何设计出和 ASP.NET Core 中 Middleware 一样的 API 方法?
- R3 HOOK OpenProcess 的问题
- Codlility---MinPerimeterRectangle
- abp(net core)+easyui+efcore仓储系统——定义仓储并实现 (四)
- List集合总结,对比分析ArrayList,Vector,LinkedList
- C++标准库(体系结构与内核分析)(侯捷第一讲)
- 基于STM32F429和Cube的主从定时器多通道输出固定个数的PWM波形
- resolv.conf 的超时(timeout)与重试(attempts)机制
- JavaScript原型和原型链( prototype 与 __proto__ )