在python中,奇怪的双下划线属性是什么?

What's the strange double underscored attribute (__attribute__) in Python?

本问题已经有最佳答案,请猛点这里访问。

我在python中看到一些奇怪但有用的双下划线属性,例如:

1
2
3
4
5
6
__module__
__init__
__str__
__class__
__repr__
...

它们似乎是一些特殊的属性。它们的规范名称是什么?


它们被称为特殊方法。

python是一种鸭子类型的语言,并且实现了面向用户的语言特性在这些特殊方法实现的"协议"中。

请参阅:http://docs.python.org/release/2.5.2/ref/specialname.html

举个例子:

要模拟任意对象的比较,请在类中实现以下两种方法:

  • __lt__
  • __eq__


根据PEP-8的"命名约定"部分

__double_leading_and_trailing_underscore__:"magic" objects or
attributes that live in user-controlled namespaces. E.g. __init__,
__import__ or __file__. Never invent such names; only use them as
documented.