You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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.

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.17 15:36:06