python中的魔法方法
对象生命周期方法说明__new__(cls, …)创建实例先于init__init__(self, …)初始化实例__del__(self)对象销毁__call__(self, …)让实例可调用属性访问控制方法说明__getattr__(self, name)属性不存在时__getattribute__(self, name)所有属性访问__setattr__(self, name, value)设置属性__delattr__(self, name)删除属性容器 / 集合行为方法说明__len__(self)len(obj)__getitem__(self, key)obj[i]__setitem__(self, key, val)obj[i] v__delitem__(self, key)del obj[i]__iter__(self)for x in obj__contains__(self, item)x in obj数值运算算数 位运算方法说明__add__(self, other)__sub__(self, other)-__mul__(self, other)*_\truediv__(self, other)/__pow__(self, other)**__neg__(self)-obj比较与排序方法说明__eq__(self, other)__ne__(self, other)!__lt__(self, other)__le__(self, other)__gt__(self, other)__ge__(self, other)字符串与格式化方法说明__str__(self)str(obj)__repr__(self)repr(obj)__format__(self, fmt)format(obj)__\bytes__(self)bytes(obj)上下文管理器方法说明__enter__(self)with obj:__exit__(self, *exc)退出上下文序列化 / Pickle方法说明__reduce__(self)pickle 重建__reduce_ex__(self)pickle 协议扩展__getstate__(self)控制序列化__setstate__(self, state)控制反序列化元类 类创建方法说明__prepare__(mcs, name, bases)准备命名空间__instancecheck__(cls, obj)isinstance__subclasscheck__(cls, sub)issubclass描述符协议方法说明__get__(self, obj, cls)读属性__set__(self, obj, value)写属性__delete__(self, obj)删属性常用但容易忽略方法说明__hash__(self)hash(obj)__bool__(self)bool(obj)__copy__(self)copy.copy__deepcopy__(self, memo)copy.deepcopy