我有一个包含列表
_offers
的类的代码。对于此列表,我创建了一个属性以允许访问它:
class OffersManager:
_offers: list[OfferData] = []
@property
def offers(cls) -> list[OfferData]:
return cls._offers
问题是程序把这个列表当作一个“属性”对象,所以当我试图获取列表的长度时它给我一个错误:
>>> len(OffersManager.offers)
>>> Traceback (most recent call last):
File "<pyshell#1>", line 1, in <module>
len(OffersManager.offers)
TypeError: object of type 'property' has no len()
有人能告诉我使属性以列表形式返回属性的正确方法吗?
您需要将该属性标记为类方法,以便它绑定到类本身而不是实例:
class OffersManager:
_offers: list[OfferData] = []
@classmethod
@property
def offers(cls) -> list[OfferData]:
return cls._offers
您需要将
cls
替换为self