擅长:python、mysql、java
<p>此解决方案不使用包装器。如果通过add连接两个列表,则有效。任何修改列表本身的操作都将按预期工作。只有像:sorted,reveresed这样返回列表副本的函数才能返回原生python列表。另一方面,sort和reverse操作列表本身并保留类型。</p>
<pre><code>class myList(list):
def __new__(cls, data=None):
obj = super(myList, cls).__new__(cls, data)
return obj
def __str__(self):
return 'myList(%s)' % list(self)
def __add__(self, other):
return myList(list(self) + list(other))
>>> l = myList(range(5))
>>> print l
myList([0, 1, 2, 3, 4])
>>> print l + [1, 2]
myList([0, 1, 2, 3, 4, 1, 2])
>>> l.sort()
>>> print l
myList([0, 1, 2, 3, 4])
</code></pre>