博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Python 反射-isinstance-issubclass-__str__-__del__
阅读量:6481 次
发布时间:2019-06-23

本文共 1875 字,大约阅读时间需要 6 分钟。

用到的

isinstance(对象,类)  -------------------  判断一个对象是否是一个类的实例

issubclass(子类,父类)  ----------------  判断一个类是否是一个类的子类

hasattr(对象,字符串属性)  ------------  判断一个属性在对象里有没有

getattr(对象,属性,第三参数)  ---------  获取对象中的字符串属性  

setattr(对象,属性,值)  ------------------  属性的赋值(设置值,修改值,新增值)

delattr(删除的属性)  --------------------  删除属性操作

__str__  ------------------------------------  在对象被打印时自动触发,可以用来定义对象被打印时的输出信息(必须返回一个字符串类型的值)

__del__  -----------------------------------  在对象被删除时先自动触发该方法,可以用来回收对象以外其他相关资源,比如系统资源

 

isinstance和issubclass例子

1 class Bar: 2     pass 3  4  5 class Foo(Bar): 6     pass 7  8  9 obj = Foo()10 print(issubclass(Foo, Bar)) >>>True11 print(isinstance(obj, Foo)) >>>True

 

反射例子

1 class Ftp: 2     def get(self): 3         print('get') 4  5     def put(self): 6         print('put') 7  8     def login(self): 9         print('login')10 11     def run(self):12         while True:13             cmd = input('>>>: ').strip()  # cmd='get'14             if hasattr(self, cmd):15                 method = getattr(self, cmd)16                 method()17             else:18                 print('输入的方法不存在')19 20 21 obj = Ftp()22 obj.run()

 

__str__例子

在对象被打印时自动触发,可以用来定义对象被打印时的输出信息(注意: 必须返回一个字符串类型的值)

1 class People: 2     def __init__(self, name, age): 3         self.name = name 4         self.age = age 5  6     def __str__(self): 7         return '
' % (self.name, self.age) 8 9 10 obj = People('egon', 18)11 print(obj) # print(obj.__str__()) >>>

 

__del__例子

在对象被删除时先自动触发该方法,可以用来回收对象以外其他相关资源,比如系统资源

1 class Foo: 2     def __init__(self, x, filepath, encoding='utf-8'): 3         self.x = x 4         self.f = open(filepath, 'rt', encoding=encoding) 5  6     def __del__(self): 7         print('run.....') 8         # 回收对象关联的其他资源 9         self.f.close()10 11 12 obj = Foo(1, 'a.txt')13 print('主===========>') >>>主===========> >>>run.....

 

转载于:https://www.cnblogs.com/earon/p/9523006.html

你可能感兴趣的文章
利用ItextPdf、core-renderer-R8 来生成PDF
查看>>
js滚动加载到底部
查看>>
memcache数据库和redis数据库的区别(理论)
查看>>
第三十九天
查看>>
论程序员加班的害处
查看>>
基于HTML5的WebGL设计汉诺塔3D游戏
查看>>
WPF资料链接
查看>>
再次更新
查看>>
利用Windows自带的Certutil查看文件MD5
查看>>
开篇,博客的申请理由
查看>>
[JSOI2008]星球大战starwar BZOJ1015
查看>>
iOS项目分层
查看>>
IntelliJ IDEA 注册码
查看>>
String字符串的截取
查看>>
Shell编程-环境变量配置文件
查看>>
Struts2和Spring MVC的区别
查看>>
git代码冲突
查看>>
git bash 风格调整
查看>>
HDOJ-1010 Tempter of the Bone
查看>>
日本开设无人机专业,打造无人机“人才市场”
查看>>