gpt4 book ai didi

Python 类变量名与 __name__

转载 作者:太空狗 更新时间:2023-10-29 22:09:37 27 4
gpt4 key购买 nike

我试图了解分配给 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

所以看起来我已经更改了类的 __name__ 属性,但我不能用那个名称引用它。我知道这有点笼统,但有人可以解释 FooFoo.__name__ 之间的关系吗?

最佳答案

很简单。完全没有关系。

当您创建一个类时,会使用您使用的名称创建一个局部变量,指向该类以便您可以使用它。

该类还获得一个属性 __name__,其中包含该变量的名称,因为这在某些情况下很方便,例如 pickling。

您可以将局部变量设置为其他值,或更改 __name__ 变量,但这样就无法进行 pickling 之类的操作,因此请不要这样做。

关于Python 类变量名与 __name__,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18326719/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com