password
URL
type
status
date
slug
summary
tags
category
icon
周起始
标签
是否汉化
多少人都在自己的认知里想的通透,然而活不通透.
前言
在 Python 中,以双下划线开头和结尾的名称是特殊的名称,称为“魔术方法”或“特殊方法”。这些方法在类定义中使用,用于实现特定的类行为。
例如,
__init__
方法用于初始化类的实例,
__str__
方法用于将对象转换为字符串表示形式。常用的双下划线方法
以下是一些常用的双下划线方法:
__init__
: 初始化对象
__str__
: 返回对象的字符串表示形式
__repr__
: 返回对象的代码表示形式
__len__
: 返回对象的长度
__getitem__
: 获取对象的元素
__setitem__
: 设置对象的元素
__delitem__
: 删除对象的元素
Python 中的所有魔术方法
以下是 Python 中的所有魔术方法:
__new__(cls[, ...])
: 创建并返回一个新对象。通常在不可变类型中使用。
__init__(self[, ...])
: 初始化一个新对象。通常在可变类型中使用。
__del__(self)
: 对象被垃圾回收时调用的方法。
__str__(self)
: 对象被转换为字符串时调用的方法。使用 str() 函数或 print() 函数时会自动调用该方法。
__repr__(self)
: 对象被转换为代码表示形式时调用的方法。使用 repr() 函数时会自动调用该方法。
__format__(self, format_spec)
: 对象被格式化为字符串时调用的方法。使用 format() 函数时会自动调用该方法。
__bytes__(self)
: 对象被转换为字节串时调用的方法。使用 bytes() 函数时会自动调用该方法。
__hash__(self)
: 对象被哈希时调用的方法。必须返回一个整数。
__bool__(self)
: 对象被转换为布尔值时调用的方法。必须返回 True 或 False。
__getattr__(self, name)
: 获取对象的不存在的属性时调用的方法。
__setattr__(self, name, value)
: 设置对象的属性时调用的方法。
__delattr__(self, name)
: 删除对象的属性时调用的方法。
__dir__(self)
: 获取对象的属性列表时调用的方法。
__getattribute__(self, name)
: 获取对象的属性时调用的方法。
__set__(self, instance, value)
: 将描述器设置为一个属性时调用的方法。
__get__(self, instance, owner)
: 获取描述器的属性值时调用的方法。
__delete__(self, instance)
: 删除描述器的属性值时调用的方法。
__len__(self)
: 获取对象的长度时调用的方法。
__length_hint__(self)
: 获取对象的长度提示时调用的方法。
__getitem__(self, key)
: 获取对象的元素时调用的方法。可以通过索引或切片访问。
__setitem__(self, key, value)
: 设置对象的元素时调用的方法。可以通过索引或切片访问。
__delitem__(self, key)
: 删除对象的元素时调用的方法。可以通过索引或切片访问。
__missing__(self, key)
: 获取字典中不存在的键时调用的方法。
__iter__(self)
: 获取对象的迭代器时调用的方法。
__reversed__(self)
: 获取对象的反向迭代器时调用的方法。
__next__(self)
: 获取迭代器的下一个元素时调用的方法。
__call__(self[, args...])
: 对象被调用时调用的方法。
__enter__(self)
: 进入上下文管理器时调用的方法。
__exit__(self, exc_type, exc_value, traceback)
: 离开上下文管理器时调用的方法。
__copy__(self)
: 浅拷贝对象时调用的方法。
__deepcopy__(self, memo)
: 深拷贝对象时调用的方法。
__eq__(self, other)
: 判断对象是否相等时调用的方法。使用 == 运算符时会自动调用该方法。
__ne__(self, other)
: 判断对象是否不相等时调用的方法。使用 != 运算符时会自动调用该方法。
__lt__(self, other)
: 判断对象是否小于另一个对象时调用的方法。使用 < 运算符时会自动调用该方法。
__le__(self, other)
: 判断对象是否小于等于另一个对象时调用的方法。使用 <= 运算符时会自动调用该方法。
__gt__(self, other)
: 判断对象是否大于另一个对象时调用的方法。使用 > 运算符时会自动调用该方法。
__ge__(self, other)
: 判断对象是否大于等于另一个对象时调用的方法。使用 >= 运算符时会自动调用该方法。
__add__(self, other)
: 对象与另一个对象相加时调用的方法。使用 + 运算符时会自动调用该方法。
__sub__(self, other)
: 对象与另一个对象相减时调用的方法。使用 - 运算符时会自动调用该方法。
__mul__(self, other)
: 对象与另一个对象相乘时调用的方法。使用 * 运算符时会自动调用该方法。
__truediv__(self, other)
: 对象与另一个对象相除时调用的方法。使用 / 运算符时会自动调用该方法。
__floordiv__(self, other)
: 对象与另一个对象整除时调用的方法。使用 // 运算符时会自动调用该方法。
__mod__(self, other)
: 对象与另一个对象取模时调用的方法。使用 % 运算符时会自动调用该方法。
__divmod__(self, other)
: 对象与另一个对象做除法并返回商和余数时调用的方法。使用 divmod() 函数时会自动调用该方法。
__pow__(self, other[, modulo])
: 对象与另一个对象做幂运算时调用的方法。使用 ** 运算符时会自动调用该方法。
__lshift__(self, other)
: 对象左移另一个对象时调用的方法。使用 << 运算符时会自动调用该方法。
__rshift__(self, other)
: 对象右移另一个对象时调用的方法。使用 >> 运算符时会自动调用该方法。
__and__(self, other)
: 对象按位与另一个对象时调用的方法。使用 & 运算符时会自动调用该方法。
__or__(self, other)
: 对象按位或另一个对象时调用的方法。使用 | 运算符时会自动调用该方法。
__xor__(self, other)
: 对象按位异或另一个对象时调用的方法。使用 ^ 运算符时会自动调用该方法。
__radd__(self, other)
: 另一个对象与对象相加时调用的方法。使用 + 运算符时会自动调用该方法。
__rsub__(self, other)
: 另一个对象与对象相减时调用的方法。使用 - 运算符时会自动调用该方法。
__rmul__(self, other)
: 另一个对象与对象相乘时调用的方法。使用 * 运算符时会自动调用该方法。
__rtruediv__(self, other)
: 另一个对象与对象相除时调用的方法。使用 / 运算符时会自动调用该方法。
__rfloordiv__(self, other)
: 另一个对象与对象整除时调用的方法。使用 // 运算符时会自动调用该方法。
__rmod__(self, other)
: 另一个对象与对象取模时调用的方法。使用 % 运算符时会自动调用该方法。
__rdivmod__(self, other)
: 另一个对象与对象做除法并返回商和余数时调用的方法。使用 divmod() 函数时会自动调用该方法。
__rpow__(self, other[, modulo])
: 另一个对象与对象做幂运算时调用的方法。使用 ** 运算符时会自动调用该方法。
__rlshift__(self, other)
: 另一个对象左移对象时调用的方法。使用 << 运算符时会自动调用该方法。
__rrshift__(self, other)
: 另一个对象右移对象时调用的方法。使用 >> 运算符时会自动调用该方法。
__rand__(self, other)
: 另一个对象按位与对象时调用的方法。使用 & 运算符时会自动调用该方法。
__ror__(self, other)
: 另一个对象按位或对象时调用的方法。使用 | 运算符时会自动调用该方法。
__rxor__(self, other)
: 另一个对象按位异或对象时调用的方法。使用 ^ 运算符时会自动调用该方法。
__iadd__(self, other)
: 对象与另一个对象相加并赋值时调用的方法。使用 += 运算符时会自动调用该方法。
__isub__(self, other)
: 对象与另一个对象相减并赋值时调用的方法。使用 -= 运算符时会自动调用该方法。
__imul__(self, other)
: 对象与另一个对象相乘并赋值时调用的方法。使用 *= 运算符时会自动调用该方法。
__itruediv__(self, other)
: 对象与另一个对象相除并赋值时调用的方法。使用 /= 运算符时会自动调用该方法。
__ifloordiv__(self, other)
: 对象与另一个对象整除并赋值时调用的方法。使用 //= 运算
离开乏味的皮囊,自由的灵魂在路上
- Name: Alan Hsu
- Tag: 随感、技术、经验、旅行、推荐、生活、音乐、电影 etc.
- Email:xulanzhong521gmail.com
- Twitter:@AlanHsu521
- Telegram:@AlanHsu521
- WeChat: Alan_Hsu_521
- Github: https://github.com/xsoway/
![notion image](https://cdn.jsdelivr.net/gh/xsoway/xmylog_imgs@main/wechat.jpeg?t=6f2e606b-f389-486d-8390-1fa4688f1cbe)
![notion image](https://cdn.jsdelivr.net/gh/xsoway/xmylog_imgs@main/%E5%85%AC%E4%BC%97%E5%8F%B7.jpeg?t=55ad09c1-be14-4698-9899-5be957b270cd)
- Author:Alan_Hsu
- URL:https://xmylog.com/article/articles_python_method_magic
- Copyright:All articles in this blog, except for special statements, adopt BY-NC-SA agreement. Please indicate the source!