gpt4 book ai didi

python - Python 类中的命名空间

转载 作者:太空宇宙 更新时间:2023-11-04 01:30:16 25 4
gpt4 key购买 nike

我有这个:

class MyClass:
"""A simple example class"""
i = 12345
def f(self):
print i # self.i will work just fine
return 'hello world'

当我这样做时:

>>> x = MyClass()
>>>
>>> x.f()

如预期的那样,我得到一个错误。

我的问题是:

  1. 为什么会出现错误?

  2. 为什么函数(或方法)定义的命名空间与包含该类的模块的全局命名空间之间没有命名空间?

  3. 在这种情况下,除了使用 self 之外,还有其他方法可以在 f 中引用 i 吗?

最佳答案

  1. 你遇到了一个错误,因为 print i 正试图打印一个全局(对于模块)变量 i。如果你想使用类的成员,你应该写self.i
  2. 因为 Guido Van Rossum 决定不使用 namespace 。其实我已经不知道该怎么回答了。
  3. 是的,但不是。是的,因为您可以使用“反射”(我不记得它在 python 中是如何调用的)并访问该类的任何成员。不,因为使用 self 是唯一可用的方法。

关于python - Python 类中的命名空间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14299013/

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