<p>我有一个关于Python2.7继承的问题。你知道吗</p>
<p>我有两个简单的班</p>
<pre><code>class A():
l = []
def f(self):
del self.l[:]
if self.a == 'a':
self.l.append('1')
if self.a == 'b':
self.l.append('2')
class B(A):
def __init__(self, a):
self.a = a
</code></pre>
<p>我在循环中创建了两个B实例,并为set list'l'调用f()</p>
<pre><code>foo = ['a','b']
l = []
for x in foo:
z = B(x)
z.f()
# normal result
print z.l
l.append(z)
print '-----'
for x in l:
# strange result
print x.l
</code></pre>
<p>结果我得到了奇怪的结果:</p>
<pre><code>Output:
['1']
['2']
-----
['2']
['2']
[Finished in 0.0s]
</code></pre>
<p>而不是1,2;1,2</p>
<p>为什么会这样?你知道吗</p>
<p>我可以通过在def(self)中定义列表“l”来修复它</p>
<pre><code>class A():
def f(self):
l = []
if self.a == 'a':
self.l.append('1')
if self.a == 'b':
self.l.append('2')
</code></pre>
<p>在这种情况下,我得到正常的输出,但仍然不明白为什么会发生这种情况。你知道吗</p>
<p>谢谢</p>