【发布时间】:2016-04-19 05:41:04
【问题描述】:
我有以下代码:
class Stat(list):
def __init__(self, lst = []):
self.s = list(lst)
def __repr__(self):
return "Stat({})".format(self.s)
def add(self, item):
self.s.append(item)
def len(self):
return len(self.s)
...(more methods, but not necessary)
除了len(),所有方法都可以正常工作。无论Stat对象的长度如何,返回的长度始终为0;我不明白为什么。
【问题讨论】:
-
如何创建 Stat 对象并调用
len方法? -
首先在第一个数组中添加一些项目
-
你可能不应该从
list继承。 -
如果你想能够做到
len(Stat()),特殊方法名是__len__。在当前类上调用len方法(因为它只是一个名为len的方法)的正确方法是Stat().len()。但是你不需要继承list来做这些。选择包装list(具有self.s)或继承它之一。 -
关于不继承自列表的说明,进一步阅读here