TypeError:“属性”类型的对象没有 len()

问题描述 投票:0回答:2

我有一个包含列表

_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()

有人能告诉我使属性以列表形式返回属性的正确方法吗?

python class object properties attributes
2个回答
0
投票

您需要将该属性标记为类方法,以便它绑定到类本身而不是实例:

class OffersManager:    
    _offers: list[OfferData] = []
    
    @classmethod
    @property
    def offers(cls) -> list[OfferData]:
        return cls._offers

0
投票

您需要将

cls
替换为
self

© www.soinside.com 2019 - 2024. All rights reserved.