Python中与str类型绑定的magic methods有哪些?及int魔法方法疑问
Python魔法方法(Magic Methods)详解
一、什么是魔法方法?
魔法方法是Python中以双下划线__开头和结尾的特殊方法,是Python面向对象机制的核心组成部分,用来实现类的内置行为。比如__add__对应加法操作+,__eq__对应相等判断==,这些方法会在特定场景下被Python自动调用,无需手动直接触发。
以你示例里的整数int类型为例:
string = 100 # 变量名虽为string,但实际是int类型 print(type(string)) # 输出 <class 'int'>
当你执行100 + 50时,Python底层实际调用的是100.__add__(50)——魔法方法的作用就是把运算符操作映射为对象的方法调用,让Python的面向对象特性更灵活直观。
二、int类型魔法方法的典型分类
从dir(string)列出的方法来看,主要可分为几类:
- 算术/位运算类:
__add__(+)、__sub__(-)、__mul__(*)、__floordiv__(//)、__mod__(%)对应算术运算;__and__(&)、__or__(|)对应位运算。 - 比较运算类:
__eq__(==)、__gt__(>)、__lt__(<)、__ge__(>=)等,实现对象间的比较逻辑。 - 类型转换类:
__int__、__float__,用于将对象转换为整数或浮点数。 - 内置函数绑定类:
__abs__对应abs()函数,__round__对应round()函数。 - 对象生命周期类:
__init__(实例初始化)、__new__(实例创建)、__delattr__(属性删除)等,管控对象的创建与销毁流程。
三、str类型的魔法方法
字符串str类型同样拥有大量魔法方法,可通过dir("hello")查看完整列表,以下是典型类别及方法:
1. 运算符相关
__add__:对应字符串拼接,如"a" + "b"实际调用"a".__add__("b")__mul__:对应字符串重复,如"a" * 3调用"a".__mul__(3)__contains__:对应in操作符,如"ll" in "hello"等价于"hello".__contains__("ll")__eq__、__ne__:实现字符串的相等/不等判断
2. 核心操作相关
__len__:对应len()函数,获取字符串长度__getitem__:对应索引访问,如"hello"[0]调用"hello".__getitem__(0)__iter__:支持迭代遍历,比如for char in "hello"会触发该方法__repr__:返回字符串的调试用官方表示,repr("hello")返回'hello'__str__:返回字符串的友好显示内容,str("hello")返回hello
3. 格式化相关
__format__:对应字符串格式化操作,如"{:>10}".format("hello")会调用该方法
内容的提问来源于stack exchange,提问作者Charles T.
相关产品推荐
相关产品推荐

