私は内蔵の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
可能な複製:http://stackoverflow.com/q/4093029/596361 –