学习Python的杜德方法列表

89 阅读11分钟

在搜索带解释的**杜德方法列表时,也就是Python魔法方法的小抄,我只在网上找到了几个资源--每个资源都只涉及杜德方法的一小部分。所以,这里是我从这些资源中收集到的127种dunder方法**(也叫*"魔法方法")*,按字母顺序排序。我以三种形式提供这些数据。

带解释的Python杜尔德方法表

名称说明
__abs__一个给定参数的绝对值
__add__x和y参数的加法x+y
__aenter__像 __enter__() 一样,但必须返回一个可等待的值。
退出(exit)类似于 __exit__() 但必须返回一个可等待的值。
迭代器返回一个异步的迭代器
对a和b的比特 "AND"。
返回一个异步迭代器 __anext__返回一个可等待的,作为迭代器参数的下一个值
__annotations__一个包含与参数名(key)相关的注释(value)的dict。
__await__返回一个迭代器来实现可等待的对象
__bases__一个类对象的基类的元组。
__bool__对内置的 bool() 返回 False 或 True 的真值测试。如果未定义,调用 __len__()
__bytes__字节调用,计算一个对象的字节字符串表示法。这应该返回一个bytes对象。
调用__call__当一个给定的实例作为一个函数被 "调用 "时被调用。
__ceil__实现内置函数round()数学函数trunc(),floor()ceil()
__class__一个类实例所属的类
__class_getitem__返回代表通过在键中找到的类型参数对一个通用类进行专业化处理的对象。
__closure__无或单元格的元组,包含函数自由变量的绑定。
代码__代表编译后的函数体的代码对象
__coerce__将 x 和 y 转换为相同的数字类型。
__complex__执行内置函数 complex() 来创建一个新的复数。
__contains__测试被调用的集合是否包含参数值
__concat__对于序列 a 和 b,返回 a + b
__defaults__返回一个包含默认参数值的元组,对于那些有的参数,否则返回 None。
__del__当实例即将被销毁时被调用。
__delattr__删除一个属性
__delete__删除所有者类的一个实例上的属性。
__delitem__删除在第二个参数中定义的索引处的第一个参数的值。
__delslice__调用以实现对 self[i:j] 的删除。对i和j的注释与__getslice__()相同。这个方法已被废弃。
__dict__支持任意函数属性的命名空间。
__dir__在对象上调用 dir() 时被调用。
__div__除法运算符 (/) 是由这些方法实现的。当 __future__.division 生效时,使用 __truediv__() 方法,否则使用 __div__()。
__divmod__实现divmod()的内置方法。Python 内置的 divmod(a, b) 函数接收两个整数或浮点数 a 和 b 作为输入参数,并返回一个元组 (a // b, a % b)。
文件函数的文档字符串,如果不可用,则为 None;不被子类继承。
__enter__输入与此对象相关的运行时环境。
__eq__丰富的比较:x==y 调用 x.__eq__(y)
__exit__退出与此对象相关的运行时上下文。
__float__调用以实现内置函数 complex(), int() 和 float()。
__floor__(x, y)实现 math.floor() 的行为,即四舍五入到最近的整数。
__floordiv__执行 a//b
__format__(self, specs)由 format() 内置函数调用,并扩展到格式化字符串字面的评估和 str.format() 方法,以产生一个对象的 "格式化 "字符串表示。
__fspath__返回路径参数的文件系统表示。
__ge__返回 x 大于或等于 y
__get__调用以获得所有者类的属性(类属性访问)或该类的实例的属性(实例属性访问)。
调用获取所有者类(类属性访问)或该类的一个实例(实例属性访问)的属性。当默认的属性访问失败,出现 AttributeError 时被调用。
调用__getattribute__。无条件地调用,以实现对类的实例的属性访问。如果该类也定义了 __getattr__(),后者将不会被调用,除非 __getattribute__() 明确地调用它或引发 AttributeError。
__getitem__返回索引 b 处的 a 的值。
__getslice__调用以实现对 self[i:j] 的评估。返回的对象应该与 self 的类型相同。
__globals__对存放函数全局变量的字典的引用 - 定义函数的模块的全局命名空间。
__gt__返回 x 大于 y
__hash__(self)被内置函数 hash() 调用,并用于对散列集合成员的操作,包括 set, frozenset, 和 dict。__hash__() 应该返回一个整数。
__hex__被调用以实现内置函数hex()。应该返回一个字符串值。
__iadd__a = iadd(a, b) 等于 a += b。
__iand__a = iand(a, b) 等于 a &= b。
__iconcat__a = iconcat(a, b) 等同于a和b序列的a += b。
__idiv__a = idiv(a, b) 等同于 a /= b。
__ifloordiv__a = ifloordiv(a, b) 相当于 a //= b。
__ilshift__a = ilshift(a, b) 相当于 a <<= b。
__imatmul__a = imatmul(a, b) 等同于 a @= b。
__imod__a = imod(a, b) 相当于 a %= b。
__import__通过名字导入一个库。例如,要动态地导入 NumPy 库,你可以运行 __import__('numpy')。
__imul__a = imul(a, b) 等于 a *= b。
__index__(x)返回转换为整数的a。
__init__(self, ...)在实例被创建后 (由 __new__() 创建),但在返回给调用者之前被调用。
在创建实例之后(通过 __new__()),但在返回给调用者之前调用。每当包含类被子类化时,这个方法就会被调用,此时 cls 就是新的子类。
__instancecheck__如果实例应该被认为是类的(直接或间接)实例,则返回 true。如果定义了这个方法,则调用它来实现 isinstance(instance, class)。
__int__调用以实现内置函数 complex(), int() 和 float()。
返回 x 的位数倒数。返回数字 obj 的位逆值。
__ior__(x)a = ior(a, b) 相当于 a |= b。
__ipow__a = ipow(a, b) 等于 a **= b。
__irshift__a = irshift(a, b) 等同于 a >= b。
__isub__a = isub(a, b) 等同于 a -= b。
__iter__当一个容器需要一个迭代器的时候,这个方法被调用。这个方法应该返回一个新的迭代器对象,它可以遍历容器中所有的对象。
__itruediv__a = itruediv(a, b) 相当于 a /= b。
__ixor__a = ixor(a, b) 等于a ^= b。
__kwdefaults__一个包含仅有关键字的参数的默认值的 dict。
__le__如果 x 低于或等于 y,返回 true。
__len__被调用以实现内置函数 len()。应该返回对象的长度,一个 >= 0 的整数。另外,一个没有定义 __bool__() 方法的对象,其 __len__() 方法返回 0,在布尔语境中被认为是假的。
__length_hint__被调用以实现operator.length_hint()。应该返回一个对象的估计长度(可能大于或小于实际长度)。
返回 x 左移 y 的值。返回x左移y的结果。
__lt__(x, y)如果 x 小于 y,返回 true。
返回 a @ b。返回 a @ b。
返回 a @ b。由 dict.__getitem__() 调用,当 key 不在字典中时,为 dict 子类实现 self[key] 。
__mod__(x, y)返回 x % y。
__module__该函数所定义的模块名称,如果不可用,则为 None。
__mro__这个属性是一个类的元组,在方法解析过程中寻找基类时,会考虑这些类。
__mul__返回 a * b, 表示 a 和 b 的数字。
__name__该函数的名称。
__ne__丰富的比较:x! =y 和 x<>y 调用 x.__ne__(y)
__neg__返回被否定的obj (-obj)。
__new__(x)调用以创建一个新的类 cls 的实例。
__next__返回容器中的下一个项目。
__nonzero__调用以实现真值测试和内置操作 bool();应返回 False 或 True,或其整数等价物 0 或 1。
__not__(x)返回 not x 的结果。
__oct__返回内置函数 oct() 的结果,计算一个整数的八进制表示。
返回一个整数的八进制表示法。返回 a 和 b 的 bitwise or。
__pos__返回 obj 的正数 (+obj)。
__pow__返回 a ** b, 为 a 和 b 的数字。
__qualname__该函数的限定名称。
__radd__被调用以实现二进制算术运算+,操作数被反射(互换)。只有当左边的操作数不支持相应的操作,并且操作数的类型不同时才调用。
读取操作数。调用以实现二进制算术运算& (__and__),操作数为反射(交换)。只有当左边的操作数不支持相应的操作,并且操作数的类型不同时,才会调用。
呼叫调用以实现二进制算术运算 / (__div__),操作数被反射(互换)。只有当左边的操作数不支持相应的运算,并且操作数的类型不同时,才调用。
__rdivmod__被调用以实现二进制算术运算divmod(),操作数被反射(交换)。只有当左边的操作数不支持相应的运算,并且操作数的类型不同时才调用。
减法(__reduce__)__reduce__() 方法不需要参数,应返回一个字符串或最好是一个元组 (返回的对象通常被称为 "减少值")。如果返回一个字符串,这个字符串应该被解释为一个全局变量的名称。
__reduce_ex__另外,也可以定义一个 __reduce_ex__() 方法。唯一的区别是这个方法应该接受一个整数的参数,即协议版本。
__repr__由 repr() 内置函数调用,计算一个对象的 "官方 "字符串表示。
__reversed__由内置的 reversed() 函数调用(如果存在),以实现反向迭代。它应该返回一个新的迭代器对象,该迭代器以反向顺序遍历容器中的所有对象。
__rfloordiv__调用该函数以实现二进制算术运算 // (__floordiv__),操作数被反射(交换)了。只有当左边的操作数不支持相应的运算,并且操作数的类型不同时才调用。
调用以实现二进制运算。调用以实现二进制算术运算<< (__lshift__),操作数为反射(交换)。只有当左边的操作数不支持相应的操作,并且操作数的类型不同时才调用。
调用以实现matmul__。调用该函数来实现操作数为@ (__matmul__)的matmul运算,操作数为反射(交换)。只有当左边的操作数不支持相应的操作,并且操作数的类型不同时才调用。
调用调用该函数实现二进制算术运算% (__mod__),操作数为反射(互换)。只有当左边的操作数不支持相应的运算,并且操作数的类型不同时,才会调用。
呼叫被调用以实现二进制算术运算 * (__mul__),操作数被反射(交换)。只有当左边的操作数不支持相应的运算,并且操作数的类型不同时才调用。
呼叫被调用以实现二进制算术运算 | (__or__),操作数被反射(交换)。只有当左边的操作数不支持相应的运算,并且操作数的类型不同时才调用。
__round__被调用以实现内置函数 round() 和数学函数 trunc(), floor() 和 ceil()。
调用实现内置函数 round() 和数学函数 trunc() and floor() ceil() 。调用实现二进制算术运算 ** (__pow__),操作数被反射(交换)。只有当左边的操作数不支持相应的运算,并且操作数是不同的类型时才调用。
__rrshift__调用实现二进制算术运算 >> (__rshift__),操作数为反射(互换)。只有当左边的操作数不支持相应的操作,并且操作数的类型不同时才调用。
__rshift__返回 a 被 b 右移的结果,即 a >> b。
__rsub__调用以实现二进制算术运算 - (__sub__),操作数被反射(交换)。只有当左边的操作数不支持相应的运算,并且操作数是不同的类型时才调用。
寄存器__rtruediv__被调用以实现二进制算术运算 / (__truediv__),操作数被反射(交换)。只有当左边的操作数不支持相应的操作,并且操作数的类型不同时才调用。
读取调用以实现二进制算术运算^ (__xor__),操作数为反射(互换)。只有当左边的操作数不支持相应的操作,并且操作数的类型不同时,才会调用。
设置__调用该函数将所有者类的一个实例上的属性设置为一个新的值,值。
__set_name__在创建所有者类的所有者时被调用。描述符已被分配给 name。
__setattr__在试图进行属性赋值时被调用。这个被调用,而不是正常的机制(即在实例字典中存储值)。
__setitem__将索引 b 处的 a 的值设置为 c。
__setslice__被调用以实现对self[i:j]的赋值。对i和j的注释与__getslice__()相同。
__sizeof__返回给定对象的内部大小,以字节为单位。
__slots__这个类变量可以被分配给一个字符串、可迭代的字符串或实例使用的变量名的字符串序列。__slots__ 为声明的变量保留空间,并防止为每个实例自动创建 __dict__ 和 __weakref__。
__str__被 str(object) 和内置函数 format() 和 print() 调用,计算一个对象的 "非正式 "或可打印的字符串表示。
子__返回 a - b。
__subclasscheck__如果子类应该被认为是类的一个(直接或间接)子类,则返回 true。如果定义了,则调用它来实现 issubclass(subclass, class)。
__subclasses__返回一个给定的类的子类。
返回 a / b,其中 2/3 是指的 2/3。返回 a / b,其中 2/3 是 .66 而不是 0。这也被称为 "真 "除法。
__trunc__调用以实现内置函数 round() 和数学函数 trunc(), floor() 和 ceil()。
调用内置函数 round() 和数学函数 trunc() and ceil() 实现。调用以实现内置的 unicode() ;应返回一个 Unicode 对象。
__xor__返回 a 和 b 的位数排他性或。

表:带有解释的Dunder方法列表

要获得用于创建此表的来源列表,请向下滚动到文章的末尾。

Python Dunder 方法 - 每行一个方法

__abs__
__add__
__aenter__
__aexit__
__aiter__
__and__
__anext__
__await__
__bool__
__bytes__
__call__
__ceil__
__class__
__class_getitem__
__cmp__
__coerce__
__complex__
__contains__
__del__
__delattr__
__delete__
__delitem__
__delslice__
__dict__
__dir__
__div__
__divmod__
__enter__
__eq__
__exit__
__float__
__floor__
__floordiv__
__format__
__fspath__
__ge__
__get__
__getattr__
__getattribute__
__getitem__
__getnewargs__
__getslice__
__gt__
__hash__
__hex__
__iadd__
__iand__
__idiv__
__ifloordiv__
__ilshift__
__imatmul__
__imod__
__import__
__imul__
__index__
__init__
__init_subclass__
__instancecheck__
__int__
__invert__
__ior__
__ipow__
__irshift__
__isub__
__iter__
__itruediv__
__ixor__
__le__
__len__
__length_hint__
__long__
__lshift__
__lt__
__matmul__
__metaclass__
__missing__
__mod__
__mro__
__mul__
__ne__
__neg__
__new__
__next__
__nonzero__
__oct__
__or__
__pos__
__pow__
__prepare__
__radd__
__rand__
__rcmp__
__rdiv__
__rdivmod__
__reduce__
__reduce_ex__
__repr__
__reversed__
__rfloordiv__
__rlshift__
__rmatmul__
__rmod__
__rmul__
__ror__
__round__
__rpow__
__rrshift__
__rshift__
__rsub__
__rtruediv__
__rxor__
__set__
__set_name__
__setattr__
__setitem__
__setslice__
__sizeof__
__slots__
__str__
__sub__
__subclasscheck__
__subclasses__
__truediv__
__trunc__
__unicode__
__weakref__
__xor__

作为字符串列表的Python Dunder方法

如果你需要它们作为Python列表进行复制和粘贴,这里就是。

['__abs__', '__add__', '__aenter__', '__aexit__', '__aiter__', '__and__', '__anext__', '__await__', '__bool__', '__bytes__', '__call__', '__ceil__', '__class__', '__class_getitem__', '__cmp__', '__coerce__', '__complex__', '__contains__', '__del__', '__delattr__', '__delete__', '__delitem__', '__delslice__', '__dict__', '__dir__', '__div__', '__divmod__', '__enter__', '__eq__', '__exit__', '__float__', '__floor__', '__floordiv__', '__format__', '__fspath__', '__ge__', '__get__', '__getattr__', '__getattribute__', '__getitem__', '__getnewargs__', '__getslice__', '__gt__', '__hash__', '__hex__', '__iadd__', '__iand__', '__idiv__', '__ifloordiv__', '__ilshift__', '__imatmul__', '__imod__', '__import__', '__imul__', '__index__', '__init__', '__init_subclass__', '__instancecheck__', '__int__', '__invert__', '__ior__', '__ipow__', '__irshift__', '__isub__', '__iter__', '__itruediv__', '__ixor__', '__le__', '__len__', '__length_hint__', '__long__', '__lshift__', '__lt__', '__matmul__', '__metaclass__', '__missing__', '__mod__', '__mro__', '__mul__', '__ne__', '__neg__', '__new__', '__next__', '__nonzero__', '__oct__', '__or__', '__pos__', '__pow__', '__prepare__', '__radd__', '__rand__', '__rcmp__', '__rdiv__', '__rdivmod__', '__reduce__', '__reduce_ex__', '__repr__', '__reversed__', '__rfloordiv__', '__rlshift__', '__rmatmul__', '__rmod__', '__rmul__', '__ror__', '__round__', '__rpow__', '__rrshift__', '__rshift__', '__rsub__', '__rtruediv__', '__rxor__', '__set__', '__set_name__', '__setattr__', '__setitem__', '__setslice__', '__sizeof__', '__slots__', '__str__', '__sub__', '__subclasscheck__', '__subclasses__', '__truediv__', '__trunc__', '__unicode__', '__weakref__', '__xor__']