每个魔法方法都有特定的目的;当特定语法出现时,它作为执行的钩子函数(回调函数就是钩子函数的一种)
__new__ : 创建类实例
__init__: 初始化
__del__: 被销毁时调用
类型转换
__str__ -> str()
__unicode__
__bytes__
__bool__ ->bool()
__int__
__float__
__complex__
比较
__eq__ -> ==
__ne__
__cmp__
__future__
__invert__
__len__ -> len()
__repr__ ->对象的repr方法用于确定该对象在python交互式终端中显示方式
__hash__
__format__ -> format()
__instancecheck__
__subclasscheck__
集合
__contains__ -> in
__getitem__
__setitem__
__delitem__
__doc__
__getattr__ -> obj.attr_name / getattr(obj,'attr_name') #常规方式无法找到属性时才调用
__setattr__ -> 复制给一个对象时调用
__getattribute__ -> 无法找到属性时调用
其他
__iter__ -> iter()
__next__ -> next()
__slot__
Python允许在定义class的时候,定义一个特殊变量__slots__来限制该class能添加的属性。
__slots__只对类对象进行限制,不对类进行限制
__slots__不仅限制类对象的属性,还限制类对象的方法
__slots__仅对当前类起作用,对继承的子类不起作用
在子类中定义__slots__,子类允许定义的属性就是自身的__slots__加上父类的__slots__
__enter__
__exit__
网友评论