Python - 修改全局变量

时间:2015-12-04 08:56:32

标签: python global-variables

我正在使用python来创建一个应用程序。我有两个不同的类,我正在玩一个全局变量。我想做的就是这样的事情

globvar = 0

class one:
  global globvar
  def __init__()
    ...
  def func1()
    ...
    globvar = 1

class two:
  global globvar
  def __init__()
    ...
  def func2()
    ...
    print globvar  # I want to print 1 if I use func1

我做过类似的事情,但func2从不打印1,但只有0.所以问题是......它可以通过不同的类改变一个全局变量吗?

1 个答案:

答案 0 :(得分:3)

你的全球声明在错误的地方;它需要在您分配给变量的位置,即在func1内。

也就是说,有一种更好的方法可以解决这个问题,而不使用全局:make globvar基类上的一个类属性,一个和两个都继承自。

class Base(object):
    globvar = 0

class One(Base):
    def func1(self):
        self.__class__.globvar = 1

class Two(Base):
    def func2(self):
        print self.globvar

(注意func1您需要通过self.__class进行分配,但在func2中您可以直接在self上访问它,因为Python会回归到类范围如果它在实例上找不到它。)