__init__的变量范围

aso*_*yan 2 python

我只是想知道为什么定义的变量__init__不能从类中访问?它应该在实例化期间执行,以便从外部访问吗?

>>> class a:
...     data = {}
... 
>>> a.data
{}
>>> class a:
...     def __init__(self):
...             self.data = {}
... 
>>> a.data
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
AttributeError: class a has no attribute 'data'
Run Code Online (Sandbox Code Playgroud)

Ósc*_*pez 12

定义的变量__init__实例变量,根据定义,它们不能从类范围访问.这就是为什么这样做的原因:

a().data # data is a member of an instance of class `a`
Run Code Online (Sandbox Code Playgroud)

......虽然这不起作用:

a.data   # data is not a member of the `a` class
Run Code Online (Sandbox Code Playgroud)

请注意,__init__(初始化程序)是在您a通过调用创建新实例时运行的a(),从该点开始,所有定义的变量__init__都绑定到该特定实例a.