如何使用属性从类级别返回列表?当调用实例类时,一切正常,但是当它调用属性类时,它得到属性对象
以下示例代码:
class zoo:
__count_animals=0
__listAnimals=[]
def __init__(self,typee,name,age):
self.typee=typee
self.name=name
self.age=age
self.__listAnimals.append(self)
zoo.__count_animals+=1
@property
def count_animals(self):
return self.__count_animals
@count_animals.setter
def count_animals(self,newvalue):
newvalue=zoo.__ilosc_zwierzat
self.__count_animals=newvalue
@property
def listAnimals(self):
return self.__listAnimals
@listAnimals.setter
def listAnimals(self,newobj):
newobj=zoo.__listAnimals
self.__listAnimals=newobj
zw1=zoo("Tiger","NoName",23)
print(zw1.listAnimals) # result it's ok ->[<__main__.zoo object at 0x006A23D0>, <__main__.zoo object at 0x006A2410>]
but
print(zoo.listAnimals) # result <property object at 0x002A1DB0>
在调用类属性时,首先需要将该类实例化到一个对象中,然后获取该对象的属性。你知道吗
这和预期的一样。因为您是在类上调用属性对象,而不是在实例上调用属性对象。类不包含与类实例相同的数据。你知道吗
您期望它发生的方式是
__count_animals
和__listAnimals
是类属性而不是实例属性。你知道吗因此,我稍微修改了您的代码,使其能够处理类属性而不是实例属性。你知道吗
上面I定义classproperty decorator:
然后你的班级动物园
很有魅力!你知道吗
相关问题 更多 >
编程相关推荐