打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
Python 运算符重载
https://www.cnblogs.com/hotbaby/p/4913363.html
Python 运算符重载
构造函数与表达式: __init__, __sub__
常见运算符重载方法
methodoverloadcall
__init__构造函数对象创建: X = Class(args)
__del__析构函数X对象收回
__add__云算法+如果没有_iadd_, X+Y, X+=Y
__or__运算符|如果没有_ior_,X|Y, X|=Y
_repr__, __str__打印,转换print(X),repr(X),str(X)
__call__函数调用X(*args, **kwargs)
__getattr__点号运算X.undefined
__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__索引和分片删除del X[key],del X[i:j]
__len__长度len(X),如果没有__bool__,真值测试
__bool__布尔测试bool(X)
__lt__, __gt__,
__le__, __ge__,
__eq__, __ne__特定的比较X<Y,X>Y,X<=Y,X>=Y,
X==Y,X!=Y
注释:(lt: less than, gt: greater than,
le: less equal, ge: greater equal,
eq: equal, ne: not equal
__radd__右侧加法other+X
__iadd__实地(增强的)加法X+=Y(or else __add__)
__iter__, __next__迭代环境I=iter(X), next()
__contains__成员关系测试item in X(任何可迭代)
__index__整数值hex(X), bin(X),  oct(X)
__enter__, __exit__环境管理器with obj as var:
__get__, __set__,
__delete__描述符属性X.attr, X.attr=value, del X.attr
__new__创建在__init__之前创建对象
索引和分片: __getitem__, __setitem__
如果在类中定义的话,则对于实例的索引运算,会自动调用__getitem__。当实例X出现X[i]这样的索引运算时,Python会自动调用__getitem__方法
拦截分片
索引迭代: __getitem__
迭代器对象: __iter__,  __next__
尽管上一节__getitem__是有效的,但它是迭代退而求其次的方法。Python所有的迭代环境会有优先尝试__iter__的方法,再尝试__getitem__。
从技术角度上讲,迭代环境是通过iter去尝试寻找__iter__方法来实现,而这种方法返回一个迭代器对象。如果已经提供了,python会重复调用迭代器对象的next()方法,直到发生StopIteration异常。如果没有找到__iter__,python会使用__getitem__机制。
__getattr__和__setattr__捕捉属性的的引用
__getattr__拦截属性.运算符
__repr__和__str__会返回字符串表达形式
__radd__处理右侧加法
__call__拦截调用
当实例调用时,使用__call__方法
__del__是析构器
当实例创建时,就会调用__init__构造方法。当实例空间被收回时,析构函数__del__就会自动执行。
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
厉害了,小编看过的介绍迭代器和生成器最易懂、最全面的文章
Python进阶系列:Python遍历的秘密
一文读懂Python可迭代对象、迭代器和生成器
python入门系列:迭代器和生成器
第一次把 Python 的切片理解得如此透彻
刻意练习:Python基础 -- Task11. 魔法方法
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服