【发布时间】:2010-06-30 20:11:48
【问题描述】:
我对 Python 还是很陌生,我的 OO 经验来自 Java。因此,鉴于以下代码,我有一些我用 Python 编写的代码对我来说非常不寻常:
class MyClass():
mylist = []
mynum = 0
def __init__(self):
# populate list with some value.
self.mylist.append("Hey!")
# increment mynum.
self.mynum += 1
a = MyClass()
print a.mylist
print a.mynum
b = MyClass()
print b.mylist
print b.mynum
运行它会产生以下输出:
['Hey!']
1
['Hey!', 'Hey!']
1
显然,我希望类变量产生相同的确切数据和相同的确切输出...我似乎在任何地方都找不到是什么使列表与字符串或数字不同,为什么该列表是否引用了后续实例中第一个实例化的相同列表?显然我可能误解了某种范围机制或列表创建机制..
【问题讨论】:
标签: python