如何在类内正确使用len()函数?

12 浏览
0 Comments

如何在类内正确使用len()函数?

这个问题已经有了答案

初学者的@classmethod和@staticmethod的含义[重复]

我正在尝试弄清楚在Python类中使用len()是如何工作的。运行此代码会导致显示错误,即使我添加了一个__len__重载并使用了@property,遵循了互联网上的各种建议。

class Routes:
   def __init__(self):
      self._route_list = list()
   def __len__(self):
      return len(self._route_list)
   @property
   def route_list(self):
      return self._route_list
   @classmethod
   def check_list(self):
      if not self.route_list or len(self.route_list) == 0:
         print('ERROR: no items to print!')
routes = Routes()
routes.check_list()

TypeError: object of type 'property' has no len()

admin 更改状态以发布 2023年5月24日
0
0 Comments

class Routes:
   def __init__(self):
      self._route_list = list()
   def __len__(self):
      return len(self._route_list)
   def add_route(self):
    self._route_list.append("route")
routes = Routes()
print(len(routes)) # 0
routes.add_route()
print(len(routes)) # 1

当你重载len时,你就是用该对象作为参数来重载len的调用。当你重载任何其他的那些类型的方法时也是一样的。

0