栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

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

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

何时在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.*
;-)做到了
%
—当这样的运算符不再意味着“移位”或“除法余数”时,您只会引起混乱。语言的标准库可以摆脱它(尽管不应该;-),但是除非您的库像该语言的标准库一样普及,否则混淆会很麻烦!-)



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/624316.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号