我正在尝试从类中声明一个全局变量:
class myclass:
global myvar = 'something'
我需要在课外访问它,但我不想在类文件之外声明它。我的问题是,这可能吗?如果是这样,语法是什么?
答案 0 :(得分:12)
在您的问题中,您指定“在主文件之外”。如果你不是指“课外”,那么这将定义一个模块级变量:
myvar = 'something'
class myclass:
pass
然后你可以这样做,假设类和变量定义在一个名为mymodule
的模块中:
import mymodule
myinstance = myclass()
print mymodule.myvar
另外,为了回应您对@ phihag的回答的评论,您可以像这样访问myvar不合格:
from mymodule import myvar
print myvar
如果您想在另一个文件中快速访问它,同时仍然在课程中定义它:
class myclass:
myvar = 'something'
然后,在您需要访问它的文件中,在本地名称空间中分配一个引用:
myvar = myclass.myvar
print myvar
答案 1 :(得分:4)
你真的应该重新考虑这是否真的有必要,这似乎是一个奇怪的方式来构建你的程序,你应该phihag的方法更正确。
如果您仍然想要这样做,请按照以下方式进行:
>>> class myclass(object):
... global myvar
... myvar = 'something'
...
>>> myvar
'something'
答案 2 :(得分:3)
您可以简单地为该类分配一个属性:
class myclass(object):
myvar = 'something'
# alternatively
myclass.myvar = 'else'
# somewhere else ...
print(myclass.myvar)
答案 3 :(得分:3)
回答你的问题
global s
s = 5
会这样做。您会遇到问题,具体取决于您在课堂上的位置。远离职能以获得所需的行为。
答案 4 :(得分:3)
你可以这样做
# 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'
答案 5 :(得分:0)
类中的全局变量也可以定义为:
class Classname:
name = 'Myname'
# To access the variable name in a function inside this class:
def myfunc(self):
print(Classname.name)