python 所用数据都是 对象(Object),每一个对象系统会加上默认的内置方法,所以 python 对应的
init(self, ...)
初始化 class ,可以初始化对象的属性del(self)
将对象删除时候调用的方法,也就是指向给 class 的指针为0时候调用。__new__(cls,*args,**kwd)
实例生成的操作,暂时没理解__str__(self)
print 对象的时候可以打印该函数返回的 string。__repr__(self)
同上面差不多,但是通俗来说这个方法用于 DEBUG多点,__str__
调用了__repr__
。__getitem__(self,key)
获取序列的索引key对应的值,等价于实现seq[key]
__setitem__(self,key,value)
:设置给定键的值__len__(self)
在调用内联函数len()时被调用,返回对象长度或者项目个数。__cmp__(stc,dst)
比较两个对象src和dst__getattribute__()
当访问某个实例属性时, getattribute 会被无条件调用,如未实现自己的 getattr 方法,会抛出 AttributeError 提示找不到这个属性,如果自定义了自己 getattr 方法的话,方法会在这种找不到属性的情况下被调用,__getattr__(s,name)
getattribute 的备胎。__setattr__(s,name,value)
设置属性的值。__delattr__(s,name)
删除name属性,del xx 时候调用。__gt__(self,other)
判断self对象是否大于other对象__lt__(slef,other)
判断self对象是否小于other对象__ge__(slef,other)
判断self对象是否大于或者等于other对象__le__(slef,other)
判断self对象是否小于或者等于other对象__eq__(slef,other)
判断self对象是否等于other对象__call__(self,*args)
把实例对象作为函数调用。
上下文管理
当对象使用 with 声明创建时,上下文管理器允许类做一些设置和清理工作。上下文管理器的行为由下面两个魔法方法所定义:
-
__enter__(self)
定义使用 with 声明创建的语句块最开始上下文管理器应该做些什么。注意 enter 的返回值会赋给 with 声明的目标,也就是 as 之后的东西。 -
__exit__(self, exception_type, exception_value, traceback)
定义当 with 声明语句块执行完毕(或终止)时上下文管理器的行为。它可以用来处理异常,进行清理,或者做其他应该在语句块结束之后立刻执行的工作。如果语句块顺利执行, exception_type , exception_value 和 traceback 会是 None 。否则,你可以选择处理这个异常或者让用户来处理。如果你想处理异常,确保 exit 在完成工作之后返回 True 。如果你不想处理异常,那就让它发生吧。
描述符,一个类必须具有实现 get , set 和 delete 三个方法中至少一个。
-
__get__(self, instance, owner)
定义当试图取出描述符的值时的行为。 instance 是拥有者类的实例, owner 是拥有者类本身。 -
__set__(self, instance, owner)
定义当描述符的值改变时的行为。 instance 是拥有者类的实例, value 是要赋给描述符的值 -
__delete__(self, instance, owner)
定义当描述符的值被删除时的行为。 instance 是拥有者类的实例