|
列举面向对象中带双下线的特殊方法?
- 类的内置方法(魔法方法):
- 凡是在类内部定义,以__开头__结尾的方法,都是类的内置方法,也称之为魔法方法。
- 类的内置方法,会在某种条件满足下自动触发。
- 内置方法如下:
- __new__: 在__init__触发前,自动触发。 调用该类时,内部会通过__new__产生一个新的对象。
- __init__: 在调用类时自动触发。 通过产生的对象自动调用__init__()
- __getattr__: 在 “对象.属性” 获取属性时,若 “属性没有” 时触发。
- __getattribute__: 在 “对象.属性” 获取属性时,无论 "属性有没有" 都会触发。
- # 注意: 只要__getattr__ 与 __getattribute__ 同时存在类的内部,只会触发__getattribute__。
- __setattr__:当 “对象.属性 = 属性值” , 添加或修改属性时触发
- __call__ : 在调用对象 “对象 + ()” 时触发。 即:对象() 或者 类()()
- __str__ : 在打印对象时触发。 # 注意: 该方法必须要有一个 “字符串” 返回值。
- __getitem__: 在对象通过 “对象[key]” 获取属性时触发。
- __setitem__: 在对象通过 “对象[key]=value值” 设置属性时触发。
- __gt__,__lt__,__eq__:自定义比较对象大小双下:gt、lt、eq
- __enter__: 进入文件时,开打文件时执行。返回值:self
- __exit__: 退出文件时,报错中断、或者代码执行完时执行。 返回值:可以有返回值,是bool类型
- __del__ : 手动删除时立马执行,或者程序运行结束时自动执行
- 使用场景:当你的对象使用过程中,打开了不属于解释器的资源;例如,文件,网络端口
- __slots__:原理,给对象声明只有某些属性,从而删除不必要的内存,不能添加新属性
- 使用场景:1.优化对象内存 2.限制属性数量
复制代码 来源:https://www.cnblogs.com/liupengfei1123/p/17105217.html
免责声明:由于采集信息均来自互联网,如果侵犯了您的权益,请联系我们【E-Mail:cb@itdo.tech】 我们会及时删除侵权内容,谢谢合作! |
|