在Python中,如果我定义了一个变量:
my_var = (1,2,3)
并尝试在类的__init__
函数中访问它:
class MyClass:
def __init__(self):
print my_var
我可以访问它并打印my_var
,而无需声明(全局我的变量)。
但是,如果我把my_var
放在class MyClass
之后,就会得到范围错误(no global variable found)
。
这是什么原因?我该怎么做?我在哪里可以读到这方面的知识?我确实读过Python类页面,但没有遇到它的解释。
谢谢你
Tags:
如果你写:
您定义的属性是
MyClass
,而不是变量。在__init__
方法中,它是MyClass.my_var
。当您将它放在
class MyClass
之后时,它将成为一个类属性,您可以通过MyClass.my_var
或从类内以self.my_var
的形式访问它(前提是您不创建同名的实例变量)。下面是一个小演示:
补充@mgilson的回答: 注意,Python类变量在类实例之间共享。而且这种行为可能非常出乎意料,看起来很怪异。实际上它是这样工作的:
相关问题 更多 >
编程相关推荐