我想在Python中创建一个由对象的所有实例共享的变量。
class myobj:
shared = []
def add(item):
self.shared.append(item)
def get():
return self.shared
item = myobj()
item.add("Hello")
item2 = myobj()
item2.add("Dave")
item.get() # this should return [Hello, Dave]
item2.get() # this also should return [Hello, Dave]
答案 0 :(得分:4)
如果您在代码中修复了与您的问题无关的两个错误,那么您的代码正好您所要求的错误。
这两个错误要改变:
def add(item):
到
def add(self, item):
并更改
def get():
到
def get(self):
此时,运行代码 从每个代码返回["Hello", "Dave"]
。
答案 1 :(得分:2)
在您的方法中为self
提供参数后,您的代码可以正常工作:
class myobj:
shared = []
def add(self, item): # added self parameter
self.shared.append(item)
def get(self): # added self parameter
return self.shared
我建议您阅读Python 'self' explained的答案。
答案 2 :(得分:0)
这将有效:
class myobj:
shared = []
def add(self, item):
self.shared.append(item)
def get(self):
return self.shared
item = myobj()
item.add("Hello")
item2 = myobj()
item.add("Dave")
item.get() # returns [Hello, Dave]
item2.get() # also returns [Hello, Dave]
答案 3 :(得分:0)
以下是三张海报的证明:
>>> class Foo:
... shared = []
...
... def add(self, item):
... self.shared.append(item)
...
... def get(self):
... return self.shared
...
>>> item = Foo()
>>> item.add('hello')
>>> item2 = Foo()
>>> item2.add('world')
>>> item2.get()
['hello', 'world']