-1

我想在 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]
4

4 回答 4

4

如果您修复了代码中与您的问题无关的两个错误,那么您的代码将完全按照您的要求执行。

两个错误要改:

def add(item):

def add(self, item):

和改变

def get():

def get(self):

那时,运行您的代码确实["Hello", "Dave"]从每个返回。

于 2012-07-19T17:05:55.503 回答
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' 解释的答案。

于 2012-07-19T17:07:10.877 回答
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]
于 2012-07-19T17:06:43.823 回答
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']
于 2012-07-19T17:09:04.357 回答