两个下划线和 Python 的故事

从前,有两个孤独的下划线,走进了 Python 的世界

魔法方法

是的,他们不幸地进入了面向对象编程的世界,并成为了魔法方法中的一部分。

在 Python 的世界里面,有以下常见的魔法方法:

1. __init__ 初始化对象时会被调用

2. __del__ 对象释放时会被调用

3. __new__ 对象被创建时会被调用;注意,创建的时机早于初始化

4. __str__ 使用 print()时会被调用

5. __len__ 使用 len()时会被调用

6. __call__ 将对象当作函数使用时会被调用

7. __add__, __sub__, __mul__, __div__ 加、减、乘、除时会被调用

8. __mod__, __pow__ 取模、求幂时会被调用

9. __getitem__, __setitem__, __delitem__ 取值、赋值、删除时调用

10. __iter__ for 循环遍历对象时会被调用

__repr__ 与 __str__ 相似,网上的资料显示前者主要针对开发者,而后者则囊括所有人群

特殊成员

在面向对象的世界里面,他们有时也会变成特殊成员的一部分

1. __doc__ 说明性文档

2. __author__ 作者信息

3. __dict__ 类或对象的所有成员,Python 自建

4. __slots__ 定义允许修改的属性,该成员不会继承和被继承

5. __module__ 当前对象所属模块

6. __class__ 当前对象所属类

事实上,你可以通过在变量前添加两条孤独的下划线来使成员变为私有成员 。

内置变量

走出面向对象的世界,他们变成了内置变量的一部分

1. __file__ 文件路径

2. __package__ 获取导入文件的路径,多层目录以点分割,注意:对当前文件返回 None

3. __cached__ 获取导入文件的缓存路径

4. __name__ 获取导入文件的路径加文件名称,路径以点分割,当前运行的文件为__main__

5. __builtins__ 内置函数

就这样,这两个孤独的下划线,在 Python 的世界里,无端漫游。