我仍然是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
Run Code Online (Sandbox Code Playgroud)
运行此结果会产生以下输出:
['Hey!']
1
['Hey!', 'Hey!']
1
Run Code Online (Sandbox Code Playgroud)
很明显,我希望类变量能够得到完全相同的数据,并且输出完全相同......我无法在任何地方找到的是什么使得列表与字符串或数字不同,为什么是列表从后续的第一个实例中引用相同的列表?很明显,我可能误解了某种范围机制或列表创建机制.
python ×1