擅长:python、mysql、java
<p>这和预期的一样。因为您是在类上调用属性对象,而不是在实例上调用属性对象。类不包含与类实例相同的数据。你知道吗</p>
<p>您期望它发生的方式是<code>__count_animals</code>和<code>__listAnimals</code>是类属性而不是实例属性。你知道吗</p>
<p>因此,我稍微修改了您的代码,使其能够处理类属性而不是实例属性。你知道吗</p>
<p>上面I<strong>定义classproperty decorator</strong>:</p>
<pre><code>class classproperty(object):
def __init__(self, f):
self.f = f
def __get__(self, obj, owner):
return self.f(owner)
</code></pre>
<p>然后你的班级<strong>动物园<strong></p>
<pre><code>class zoo:
__count_animals=0
__listAnimals=[]
def __init__(self,typee,name,age):
self.typee=typee
self.name=name
self.age=age
zoo.__listAnimals.append(self)
zoo.__count_animals+=1
@classproperty
def count_animals(self):
return self.__count_animals
@classproperty
def listAnimals(cls):
return cls.__listAnimals
zw1=zoo("Tiger","NoName",23)
print(zoo.listAnimals) # result [<__main__.zoo object at 0x10699c410>]
</code></pre>
<p>很有魅力!你知道吗</p>