Python中下划线用法

💡 原文中文,约4500字,阅读约需11分钟。
📝

内容提要

Python中的下划线用法"Dunder"是指以双下划线开头和结尾的变量、方法或属性。这些"魔法方法"允许开发者定义类的默认行为,使得自定义类可以与内置类型一样工作。常见的魔法方法包括__init__、__repr__、__str__等。除了魔法方法,还有许多其他的魔法属性。总之,Python中有超过150个独特的魔法方法和属性,但不建议记住所有的名称,而是根据需要查找和使用。

🔎

延伸解读

魔法方法的核心作用

魔法方法让自定义类能够模拟内置类型的行为,例如通过__init__初始化对象、__repr__提供调试字符串、__eq__定义相等性。这些方法使得类可以像内置类型一样使用运算符和函数,是Python面向对象编程灵活性的关键。

属性访问的精细控制

通过__getattr__、__getattribute__、__setattr__和__delattr__等方法,可以控制对象属性的访问、赋值和删除。注意__getattribute__每次属性访问都会调用,实现时需避免递归;而__getattr__仅在属性未找到时触发。

异步与上下文管理

上下文管理器通过__enter__和__exit__实现,支持with语句。异步场景下,__aenter__和__aexit__用于异步上下文管理器,__aiter__和__anext__用于异步迭代,__await__用于创建可等待对象。这些方法扩展了Python的异步编程能力。

Dunder属性的多样性

除了方法,Python还有众多非方法的Dunder属性,如__name__、__doc__、__dict__、__slots__等,用于存储元信息或优化内存。总数超过150个,不建议死记硬背,而应根据需要查阅使用。

❓

Q&A

什么是Dunder方法?

Dunder方法是指以双下划线开头和结尾的变量、方法或属性,允许开发者定义类的默认行为。

常见的Dunder方法有哪些?

常见的Dunder方法包括__init__、__repr__、__str__、__eq__等。

Dunder方法如何影响对象的比较?

Dunder方法如__eq__、__ne__和__hash__用于定义对象的等价性和哈希值,影响对象的比较和存储。

如何使用Dunder方法实现上下文管理器?

上下文管理器使用__enter__和__exit__方法来定义进入和退出上下文的行为。

Python中有多少个Dunder方法和属性?

Python包含超过150个独特的Dunder方法和属性。

Dunder属性的作用是什么?

Dunder属性如__name__、__module__、__doc__等提供了关于对象的元信息。

🏷️

标签

➡️

继续阅读