Python类变量名称vs __name__

ACV*_*ACV 6 python class

我试图理解分配Python类对象的变量与该类对象的__name__属性之间的关系.例如:

In [1]: class Foo(object):
   ...:     pass
   ...: 

In [2]: Foo.__name__ = 'Bar'

In [3]: Foo.__name__
Out[3]: 'Bar'

In [4]: Foo
Out[4]: __main__.Bar

In [5]: Bar
---------------------------------------------------------------------------
NameError                                 Traceback (most recent call last)
<ipython-input-5-962d3beb4fd6> in <module>()
----> 1 Bar

NameError: name 'Bar' is not defined
Run Code Online (Sandbox Code Playgroud)

所以看起来我已经改变了__name__类的属性,但我不能用它来引用它.我知道这是一个有点普通,但可能有人解释之间的关系FooFoo.__name__

Len*_*bro 9

这很简单.完全没有关系.

创建类时,将使用您使用的名称创建局部变量,指向该类以便您可以使用它.

该类还获取一个__name__包含该变量名称的属性,因为在某些情况下这很方便,比如酸洗.

你可以将局部变量设置为其他东西,或者更改__name__变量,但是像酸洗这样的东西将不起作用,所以不要这样做.