• python数据模型(特殊方法)


    python中的全部特殊方法

    本部分内容可以参考官方网址

      python中一共有83个特殊方法,其中47个用于算术运算、位运算和比较操作。我根据《流畅的python》中的整理,摘录如下两个表格

    表1:跟运算符无关的特殊方法

    类  别 方法名
    字符串/字节序列表示形式 __repr__、__str__、__format__、__bytes__
    数值转换 __abs__、__bool__、__complex__、__int__、__float__、__hash__、__index__
    集合模拟 __len__、__getitem__、__setitem__、__delitem__、__contains__
    迭代枚举 __iter__、__reversed__、__next__
    可调用模拟 __call__
    上下文管理 __enter__、__exit__
    实例创建和销毁 __new__、__init__、__del__
    属性管理 __getattr__、__getattribute__、__setattr__、__delattr__、__dir__
    属性描述符 __get__、__set__、__delete__
    跟类相关的服务 __prepare__、__instancecheck__、__subclasscheck__

    表2:跟运算符相关的特殊方法

    类  别 方法名和对应的运算符
    一元运算符 __neg__ -、__pos__ +、__abs__ abs()
    众多比较运算符 __lt__ <、__le__ <=、__eq__ ==、__ne__ !=、__gt__ >、__ge__>=
    算数运算符

    __add__ +、__sub__ -、__mul__ *、__truediv__  /、__floordiv__ //、

    __mod__  %、__divmod__ divmod()、__pow__ **或pow()、__round__ round()

    反向算数运算符 __radd__、__rsub__、__rmul__、__rtruediv__、__rfloordiv__、__rmod__、__rdivmod__、__rpow__
    增量赋值算术运算符 __iadd__、__isub__、__imul__、__itruediv__、__ifloordiv__、__imod__、__ipow__
    位运算符 __invert__ ~、__lshift__ <<、__rshift__ >>、__and__ &、__or__ |、__xor__ ^
    反向位运算符 __rlshift__、__rrshift__、__rand__、__rxor__、__ror__
    增量赋值位运算符 __ilshift__、__irshift__、__iand__、__ixor__、__ior__

    如何使用特殊方法:

    1、特殊方法的调用是隐式的,通常你的代码无需直接使用特殊方法。除非有大量的元编程存在,直接调用特殊方法的频率应该远远低于你去实现它们的次数。唯一的例外可能是__init__方法,你的代码里可能经常会用到它,目的是在你的子类的__init__初始化方法中调用超类的构造器。

    2、通过内置的函数(例如len、iter、str等)来使用特殊方法是最好的选择。这些内置函数不仅会调用特殊方法,通常还提供额外的好处,而且对于内置的类来说,它们的速度更快。

    3、不要自己想当然地随意添加特殊方法,比如__foo__之类的,因为虽然现在这个名字没有被python内部使用,以后就不一定了。

     

    原文链接:-->廖Sir

  • 相关阅读:
    Android学习地址
    Android动画设计源码地址
    chromeWebBrowser之浏览器开发
    win8.1蓝屏解决
    打包应用程序
    win8.1解决鼠标右键反应慢的问题
    Rewrite服务器和robots文件屏蔽动态页面
    第08组 Alpha事后诸葛亮
    第08组 Alpha冲刺(6/6)
    第08组 Alpha冲刺(5/6)
  • 原文地址:https://www.cnblogs.com/amou/p/8998614.html
Copyright © 2020-2023  润新知