Python中下划线用法
内容提要
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__等提供了关于对象的元信息。