pythone class 内置特殊方法

__str__   面向用户的输出

__repr__ 面向开发人员的输出

打印类实例,先找str如果有刚打印__str__,如没有__str__ 则找__repr__

__call__ 使类当做函数可以真接调用

 

类的索引操作

     __setitem__(self,key,vlaue)

     __getitem__(self,item)

     __delitem__(self.key)

 

__dir__()用法:列出对象的所有属性(方法)名

重载运算符含义
__new__ 创建类,在 __init__ 之前创建对象
__init__ 类的构造函数,其功能是创建类对象时做初始化工作。
__del__  析构函数,其功能是销毁对象时进行回收资源的操作,程序运行完之后自动执行
__add__ 加法运算符 +,当类对象 X 做例如 X+Y 或者 X+=Y 等操作,内部会调用此方法。但如果类中对 __iadd__ 方法进行了重载,则类对象 X 在做 X+=Y 类似操作时,会优先选择调用 __iadd__ 方法。
__radd__ 当类对象 X 做类似 Y+X 的运算时,会调用此方法。
__iadd__ 重载 += 运算符,也就是说,当类对象 X 做类似 X+=Y 的操作时,会调用此方法。
__or__ “或”运算符 |,如果没有重载 __ior__,则在类似 X|Y、X|=Y 这样的语句中,“或”符号生效
__repr__,__str__ 格式转换方法,分别对应函数 repr(X)、str(X)
__call__ 函数调用,类似于 X(*args, **kwargs) 语句
__getattr__ 点号运算,用来获取类属性
__setattr__ 属性赋值语句,类似于 X.any=value
__delattr__ 删除属性,类似于 del X.any
__getattribute__ 获取属性,类似于 X.any
__getitem__ 索引运算,类似于 X[key],X[i:j]
__setitem__ 索引赋值语句,类似于 X[key], X[i:j]=sequence
__delitem__  索引和分片删除
__get__, __set__, __delete__ 描述符属性,类似于 X.attr,X.attr=value,del X.attr
__len__  计算长度,类似于 len(X)
__lt__,__gt__,__le__,__ge__,__eq__,__ne__  比较,分别对应于 <、>、<=、>=、=、!= 运算符。
__iter__,__next__ 迭代环境下,生成迭代器与取下一条,类似于 I=iter(X) 和 next()
__contains__ 成员关系测试,类似于 item in X
__index__  整数值,类似于 hex(X),bin(X),oct(X)
__enter__,__exit__ 在对类对象执行类似 with obj as var 的操作之前,会先调用 __enter__ 方法,其结果会传给 var;在最终结束该操作之前,会调用 __exit__ 方法(常用于做一些清理、扫尾的工作)

hasattr() 函数用来判断某个类实例对象是否包含指定名称的属性或方法

getattr() 函数获取某个类实例对象中指定属性的值

setattr() 函数的功能相对比较复杂,它最基础的功能是修改类实例对象中的属性值。其次,它还可以实现为实例对象动态添加属性或者方法。

issubclass(cls, class_or_tuple):检查 cls 是否为后一个类或元组包含的多个类中任意类的子类。

isinstance(obj, class_or_tuple):检查 obj 是否为后一个类或元组包含的多个类中任意类的对象。

__new__ 

1)__new__方法是静态类方法,虽然没有加静态类方法的装饰器;

2)A继承object类,虽然通常可以省略object字样。但这里省略就无法执行__new__方法。若A继承其他类,同样可以使用object的__new__方法,也可以使用父类的__new__方法;

3)在实例化对象的时候,__new__方法在__init__方法之前执行;

4)__new__必须返回一个对象,才能给__init__初始化。

posted on 2020-01-08 07:47  InnoLeo  阅读(391)  评论(0编辑  收藏  举报