如何从类中声明全局变量?

Ada*_*dam 7 python class

我试图从类中声明一个全局变量,如下所示:

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)


And*_*ark 5

您应该重新考虑这是否真的必要,这似乎是一种奇怪的方式来构建程序,并且您应该使用phihag的方法更正确。

如果您决定仍然要这样做,可以按照以下步骤操作:

>>> class myclass(object):
...     global myvar
...     myvar = 'something'
...
>>> myvar
'something'
Run Code Online (Sandbox Code Playgroud)


0xc*_*0de 5

你可以像

# 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)