我在Python中看到一些奇怪但有用的双重下划线属性,例如:
__module__
__init__
__str__
__class__
__repr__
...
它们似乎是一些特殊属性。他们的规范名称是什么?
答案 0 :(得分:5)
它们被称为特殊方法。
Python是一种 Duck Typed 语言,其中很多都是 面向用户的语言功能已实现 在这些特殊方法实施的“协议”中。
请参阅:http://docs.python.org/release/2.5.2/ref/specialnames.html
作为示例:
要模仿任意对象的比较,请在类中实现以下两种方法:
__lt__
__eq__
答案 1 :(得分:2)
每"Naming conventions" section of PEP-8
__double_leading_and_trailing_underscore__
:“魔法”物品或 存在于用户控制的命名空间中的属性。例如。__init__
,__import__
或__file__
。不要发明这样的名字;只用它们作为 记录。