我试图从类中声明一个全局变量,如下所示:
class myclass:
global myvar = 'something'
Run Code Online (Sandbox Code Playgroud)
我需要在类外部访问它,但我不想在类文件之外声明它.我的问题是,这可能吗?如果是这样,语法是什么?
zig*_*igg 12
在您的问题中,您指定"在主文件之外".如果你不是指"课外",那么这将定义一个模块级变量:
myvar = 'something'
class myclass:
pass
Run Code Online (Sandbox Code Playgroud)
然后你可以这样做,假设类和变量定义在一个名为的模块中mymodule
:
import mymodule
myinstance = myclass()
print mymodule.myvar
Run Code Online (Sandbox Code Playgroud)
另外,在回复你对@ phihag的答案的评论时,你可以像这样访问myvar不合格:
from mymodule import myvar
print myvar
Run Code Online (Sandbox Code Playgroud)
如果您只想从另一个文件中快速访问它,同时仍然在类中定义它:
class myclass:
myvar = 'something'
Run Code Online (Sandbox Code Playgroud)
然后,在您需要访问它的文件中,在本地名称空间中分配引用:
myvar = myclass.myvar
print myvar
Run Code Online (Sandbox Code Playgroud)
您应该重新考虑这是否真的必要,这似乎是一种奇怪的方式来构建程序,并且您应该使用phihag的方法更正确。
如果您决定仍然要这样做,可以按照以下步骤操作:
>>> class myclass(object):
... global myvar
... myvar = 'something'
...
>>> myvar
'something'
Run Code Online (Sandbox Code Playgroud)
你可以像
# I don't like this hackish way :-S
# Want to declare hackish_global_var = 'something' as global
global_var = globals()
global_var['hackish_global_var'] = 'something'
Run Code Online (Sandbox Code Playgroud)