Python中多个对象实例共享全局变量

0 投票
1 回答
2373 浏览
提问于 2025-04-17 07:12

我想要一个全局变量 x,可以被多个对象实例访问:

模块 Obj 应该有类似这样的内容:

x = 0

class Obj:  
  def set_x(self):    
      global x
      x = 2

  def print_x(self):    
      print x

...等等。

另一个模块(比如:主模块)创建这个对象 obj:

obj1 = Obj.Obj()
obj1.set_x()
obj2 = Obj.Obj()
obj2.print_x

这应该打印出 2

1 个回答

3

我觉得你可能在找类似于静态变量的东西(我不太确定在Python中它们叫什么)。你有没有试过这样的写法:

class Obj:
   x = 0

   def set_x(self):
      Obj.x = Obj.x + 1

   def print_x(self):
      print Obj.x

测试:

>>> obj1 = Obj()
>>> obj1.set_x()
>>> obj1.print_x()
1
>>> obj2 = Obj()
>>> obj2.set_x()
>>> obj2.print_x()
2
>>> obj1.print_x()
2

你可以看看这个StackOverflow帖子,里面有更多的信息。

撰写回答