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__初始化。
每天进步一点点,多思考,多总结
版权声明:本文为CNblog博主「zaituzhong」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。