Python-修改全局变量



我正在使用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。所以问题是…有可能通过不同的类来改变一个全局变量吗?

您的全局声明位于错误的位置;它需要位于您分配给变量的点,即func1内部。

也就是说,有一种更好的方法来解决这个问题,而不需要使用全局:使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在实例上找不到它,它将返回到类范围。)

相关内容

  • 没有找到相关文章

最新更新