我想一些属性添加到内置list
类型,所以我写了这个:Python:我如何从内置列表类型继承?
class MyList(list):
def __new__(cls, *args, **kwargs):
obj = super(MyList, cls).__new__(cls, *args, **kwargs)
obj.append('FirstMen')
return obj
def __init__(self, *args, **kwargs):
self.name = 'Westeros'
def king(self):
print 'IronThrone'
if __name__ == '__main__':
my_list = MyList([1, 2, 3, 4])
print my_list
但my_list
只包含元素'FirstMen'
。为什么我的__new__
在这里不起作用?我应该如何继承像list
这样的内置类型?像str
这样的不可变类型是不是一样?
参见[这个问题](http://stackoverflow.com/questions/3945940/what-to-consider-before-subclassing-list)有关子类列表主题的讨论,以及它如何往往不是你想要的。 (collections.MutableSequence,如果可用,可能是更好的路线:阅读[Alex Martelli](http://stackoverflow.com/a/3488283/487339))。 – DSM 2012-02-24 15:12:17
可能的重复:http://stackoverflow.com/q/4093029/596361 – 2012-10-02 15:52:28