【发布时间】:2015-08-28 20:08:26
【问题描述】:
我是 Python 新手,更多的是 Java 背景。我理解 Python 中静态类变量的概念,但我注意到列表和对象的工作方式与字符串不同,例如,它们在类的实例之间共享。
换句话说:
class box ():
name = ''
contents = []
def __init__ (self, name):
self.name = name
def store (self, junk):
self.contents.append(junk)
def open (self):
return self.contents
现在,如果我创建两个实例并尝试向它们添加内容:
a = box('Box A')
b = box('Box B')
a.store('apple')
b.store('berry')
print a.open()
print b.open()
输出:
['apple','berry']
['apple','berry']
很明显,它们在 box 的两个实例之间共享。
现在我可以通过执行以下操作来解决它:
def store (self, junk):
temp = self.contents
temp.append(junk)
self.contents = temp
但是有没有更清洁/更传统的方式?有人可以解释为什么会这样吗?
【问题讨论】:
-
您可能会发现instance variables vs class variables 很有用。
标签: python list static static-variables class-variables