何时在python中使用运算符重载的经验法则

何时在python中使用运算符重载的经验法则,第1张

何时在python中使用运算符重载的经验法则

当您创建属于现有“抽象基类”(ABC)的新类时,运算符重载最有用-
实际上,标准库模块集合中的许多ABC都依赖于某些特殊方法(和特殊方法)的存在。方法(一种名称以双下划线AKA“
dunders”开头和结尾)正是您在Python中执行运算符重载的方式)。这提供了良好的入门指导。

例如,一个

Container
必须 重写特殊方法
__contains__
,即成员资格检查运算符
item incontainer
(例如,
if item incontainer:
-不要与依赖于!-的
for
语句混淆)。同样,必须重写,一个必须重写,一个或一个必须重写,等等。(此外,ABC可以为您的班级提供混合功能-
例如,同时提供这两种功能,并可以在您提供的替代项的基础上提供,从而自动将您的班级设置为a )。
for item incontainer:``__iter__``Hashable``__hash__``Sized``__len__``Sequence``Mapping``__getitem__``Sequence``Mapping``__contains__``__getitem__``Container

除了之外

collections
,大多数情况下,如果您的新类“是数字”,您将要覆盖特殊方法(即,提供 *** 作符重载)。还存在其他特殊情况,但是可以抵制重载运算符“仅出于冷静”的诱惑,而没有“正常”含义的语义联系,就像C
++的流为
<<
>>
和Python字符串所做的一样(
2.*
幸运的是,在Python中不再存在
3.*
;-)做到了
%
—当这样的运算符不再意味着“移位”或“除法余数”时,您只会引起混乱。语言的标准库可以摆脱它(尽管不应该;-),但是除非您的库像该语言的标准库一样普及,否则混淆会很麻烦!-)



欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5630352.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-15
下一篇 2022-12-16

发表评论

登录后才能评论

评论列表(0条)

保存