Blu*_*780 4 python oop naming python-3.x
如果您有一个类,并将其定义为:
class A:
pass
Run Code Online (Sandbox Code Playgroud)
当你使用这个功能时:
dir(A)
Run Code Online (Sandbox Code Playgroud)
返回该类包含的所有方法和属性:
['__class__', '__delattr__', '__dict__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__gt__', '__hash__', '__init__', '__init_subclass__', '__le__', '__lt__', '__module__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', '__weakref__']
Run Code Online (Sandbox Code Playgroud)
我的问题是,什么之前和之后他们如都以双下划线方法__class__,__delattr__,__dict__,__init__,叫什么?我假设它们被称为构造函数,但在进行研究之后 - 似乎该术语仅指__init__函数.有谁知道是否有一个特定的类别来调用这些方法?
它们被称为特殊方法名称:
特殊方法名称
类可以通过定义具有特殊名称的方法来实现由特殊语法(例如算术运算或下标和切片)调用的某些操作.这是Python的运算符重载方法,允许类根据语言运算符定义自己的行为.
和特殊属性:
下面的一些类型描述包含一个列出"特殊属性"的段落.这些是提供对实现的访问的属性,不适用于一般用途.
以双下划线开头并以双下划线结尾的名称是保留名称.请参阅保留的标识符类:
__*__
系统定义的名称.这些名称由解释器及其实现(包括标准库)定义.当前系统名称在特殊方法名称部分和其他地方讨论.更多可能会在未来的Python版本中定义.任何使用的__*__名称,在任何情况下,不遵循明确记载的使用,如有破损不会发出警告.
它们有时被称为dunder名称,作为双下划线的缩写.魔术名称也是他们的流行术语,但两者都不是官方名称.
请注意,该__init__方法是实例初始化器钩子,它不是构造函数.该方法在调用此方法时已经构建.如果需要挂钩构造,请实现该__new__方法.
| 归档时间: |
|
| 查看次数: |
59 次 |
| 最近记录: |