Python魔法方法是以双下划线开头结尾的特殊方法,由解释器在特定操作时自动调用,用于定制类行为,使自定义对象支持如+、==、len()等内置操作,并融入Python协议生态。

Python魔法方法(Magic Methods),也叫特殊方法(Special Methods),是类中以双下划线开头和结尾的方法,比如 __init__、__str__、__add__。它们不是让你手动调用的,而是由Python解释器在特定操作发生时自动触发,用来定制类的行为。
魔法方法让对象像内置类型一样工作
Python内置类型(如 int、list、str)支持 +、==、print()、len() 等操作,是因为它们内部实现了对应的魔法方法。你给自己的类加上这些方法,就能让实例支持相同语法:
-
__add__(self, other) → 支持
a + b -
__eq__(self, other) → 支持
a == b -
__len__(self) → 支持
len(a) -
__getitem__(self, key) → 支持
a[key](像列表或字典那样索引)
最常用且必须了解的几个魔法方法
有些魔法方法几乎每个自定义类都可能用到,掌握它们能写出更自然、更Pythonic的代码:
- __init__(self, ...):构造方法,创建对象时自动运行(注意它不返回值,只负责初始化)
-
__str__(self):返回用户友好的字符串表示,用于
print()和str() -
__repr__(self):返回开发者友好的“可复现”字符串,用于调试和交互式环境(推荐格式:
ClassName(...)) -
__bool__(self):决定
if obj:中对象被视为 True 还是 False(没定义时默认为 True)
魔法方法不是语法糖,而是协议的一部分
Python通过“协议”(Protocol)来实现多态——只要一个类实现了 __iter__ 和 __next__,它就是迭代器;只要实现了 __enter__ 和 __exit__,就能用于 with 语句。这不是强制继承,而是约定俗成的接口。写对魔法方法,你的类就天然融入Python生态。
家电公司网站源码是一个以米拓为核心进行开发的家电商城网站模板,程序采用metinfo5.3.9 UTF8进行编码,软件包含完整栏目与数据。安装方法:解压上传到空间,访问域名进行安装,安装好后,到后台-安全与效率-数据备份还原,恢复好数据后到设置-基本信息和外观-电脑把网站名称什么的改为自己的即可。默认后台账号:admin 密码:132456注意:如本地测试中127.0.0.1无法正常使用,请换成l
立即学习“Python免费学习笔记(深入)”;
注意命名和使用规范
魔法方法名不能随意改动(比如写成 _init_ 就无效),且多数不应直接调用(如不用 obj.__str__(),而用 str(obj) 或 print(obj))。Python会根据上下文自动选择并调用合适的方法,包括一些有回退逻辑的(例如没有 __bool__ 时会尝试 __len__)。
不复杂但容易忽略。写类时多想一句:“我这个对象,别人会怎么用它?”——那句“怎么用”,往往就对应着一个魔法方法。










