擅长:python、mysql、java
<p>首先,我建议您遵循<a href="https://stackoverflow.com/questions/8180014/how-to-subclass-python-list-without-type-problems/8180073#8180073">Björn Pollex's advice</a>(+1)。</p>
<p>要解决这个特殊问题(<code>type(l2 + l3) == CustomList</code>),需要实现一个自定义的<a href="http://docs.python.org/reference/datamodel.html#object.__add__" rel="noreferrer">^{<cd2>}</a>:</p>
<pre><code> def __add__(self, rhs):
return CustomList(list.__add__(self, rhs))
</code></pre>
<p>对于<a href="http://docs.python.org/release/2.3.5/whatsnew/section-slices.html" rel="noreferrer">extended slicing</a>:</p>
<pre><code> def __getitem__(self, item):
result = list.__getitem__(self, item)
try:
return CustomList(result)
except TypeError:
return result
</code></pre>
<p>我也推荐。。。</p>
<pre><code>pydoc list
</code></pre>
<p>…在你的命令提示下。您将看到<a href="http://docs.python.org/library/functions.html#list" rel="noreferrer">^{<cd3>}</a>公开了哪些方法,这将很好地指示您需要重写哪些方法。</p>