我想为python的list
创建一个替代品,这样我就可以知道添加或删除项目的时间。列表的子类或实现列表接口的东西也同样适用。我更喜欢一个解决方案,我不必重新实现列表的所有功能。有一种简单的+ pythonic方式吗?
伪代码:
class MyList(list):
# ...
def on_add(self, items):
print "Added:"
for i in items:
print i
# and the same for on_remove
l = MyList()
l += [1,2,3]
# etc.
答案 0 :(得分:5)
要查看列表中定义的功能,可以执行
>>> dir(list)
然后你会看到你可以覆盖的东西,试试这个:
class MyList(list):
def __iadd__(self, *arg, **kwargs):
print "Adding"
return list.__iadd__(self, *arg, **kwargs)
你可能需要做更多的事情来获得所有这些。
答案 1 :(得分:2)
如果您不要求您的代码使用Python< 2.2,documentation for userlist会告诉您子类list
。您可能无法至少覆盖允许添加/删除元素的方法。请注意,这包括切片操作符。