<p>您不希望在类内声明成员,而只希望在<code>__init__</code>方法中设置:</p>
<pre><code>class Listener:
def __init__(self, id):
self.id = id
self.artists = []
def addArtist(self, artist, plays):
print self.id # debugging...
print "pre: ", self.artists
self.artists.append(artist)
print "post: ", self.artists
</code></pre>
<p>如果你有一个像</p>
<pre><code>class A:
x=5
</code></pre>
<p>那么x是类的成员,而不是该类实例的成员。这可能会令人困惑,因为python允许您通过实例访问类成员:</p>
<pre><code>>>> a=A()
>>> print a.x
5
</code></pre>
<p>但您也可以通过类本身访问它:</p>
<pre><code>>>> print A.x
5
</code></pre>
<p>它甚至看起来工作正常:</p>
<pre><code>>>> a1=A()
>>> a2=A()
>>> a1.x=6
>>> print a1.x
6
>>> print a2.x
5
</code></pre>
<p>但实际发生的情况是,您在a1实例中放入了一个新的x,它将被打印出来,而不是类成员,它仍然有其原始值:</p>
<pre><code>>>> print A.x
5
</code></pre>
<p>只有当你拥有一些可以改变的东西,比如一个列表时,你才会开始看到不同:</p>
<pre><code>class A:
l=[]
>>> a1=A()
>>> print a1.l
[]
>>> a2=A()
>>> print a2.l
[]
>>> a1.l.append(5)
>>> print a1.l
[5]
>>> print a2.l
[5]
>>> print A.l
[5]
</code></pre>