我想一些屬性添加到內置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