Python修改全局变量

2024-04-26 18:23:08 发布

您现在位置: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。所以问题是。。。是否可能通过不同的类更改全局变量?


Tags: to应用程序ifinitdefglobaloneclass
1条回答
网友
1楼 · 发布于 2024-04-26 18:23:08

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

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

相关问题 更多 >