美文网首页
2-3 魔法函数一览

2-3 魔法函数一览

作者: xgnb | 来源:发表于2019-03-10 21:42 被阅读0次

    还是那句:python的魔法函数都已经提供好了的,我们不能够随便取定义我们的魔法函数。

    到底python给我们提供了哪些魔法函数呢?

    这边从两个方面来列出python提供给我们的魔法函数:

    非数字运算:

    (1) - 字符串表示: __repr__, __str__。
    (2) - 集合序列相关: __len__, __getitem__, __setitem__, __delitem__, __contains__。
    (3) - 迭代相关: __iter__, __next__。
    (4) - 可调用:__call__
    (5) - 上下文管理器: __enter__, __exit__。
    (6) - 数值转换: __abs__, __bool__, __int__, __float__, __hash__, __index__.
    (7) - 元类相关: __new__, __init__。
    (8) - 属性相关: __getattr__、__setttr__,__getattribute__、__setattribute__, __dir__。
    (9) - 属性描述符: __get__、__set__、__delete__。
    (10) - 协程:: __await__、 __aiter__、 __anext__、 __aenter__、 __aexit__。

    数学运算:

    (1) - 一元运算符: __neg__( - 负号)、 __pos__(+ 加号)、__abs__ (绝对值)。
    (2) - 二元运算符:__lt__(<)、__le__(<=)、__eq__(==)、__ne__(!=)、__gt__(>)、__ge__(>=)。
    (3) - 算术运算符: __add__(+)、__sub__(-)、__mul__()、__truediv__(/)、__floordiv__(//)、__mod__(%)、__divmod__divmod()、__pow__*或pow()、__round__round()。
    (4) - 反向算术运算符: __radd__、__rsub__、__rmul__、__rtruediv__、__rfloordiv__、__rmod__、__rdivmod__、__rpow__。
    (5) - 增量赋值算术运算符: __iadd__、__isub__、__imul__、__itruediv__、__ifloordiv__、__imod__、__ipow__。
    (6) - 位运算符: __invert__(~)、__lshift__(<<)、__rshift__(>>)、__and__(&)、__or__(|)、__xor__(^)。
    (7) - 反向位运算符: __rlshift__、__rrshift__、__rand__、__rxor__、__ror__。
    (8) - 增量赋值位运算符: __ilshift__、__irshift__、__iand__、__ixor__、__ior__。


    下面我们来接介绍两个魔法函数,关于字符串的__str__与__repr__:
    __str__:作为实例对象在输出时的返回,看如下代码。

    # 未声明时
    class Company:
        def __init__(self, employee_list):
            self.employee = employee_list
    
    
    company = Company(['tom', 'bob', 'jane'])
    print(company)
    

    当我们定义了他的输出返回__str__:

    class Company:
        def __init__(self, employee_list):
            self.employee = employee_list
    
        def __str__(self):
            return '-'.join(self.employee)
    
    company = Company(['tom', 'bob', 'jane'])
    print(company)
    

    __repr__: 用于开发模式,比如在ipython、jupyternotebook的环境下,直接访问变量得到的返回形式,对比如下:

    相关文章

      网友评论

          本文标题:2-3 魔法函数一览

          本文链接:https://www.haomeiwen.com/subject/llvbcqtx.html