擅长:python、mysql、java
<p>我认为使用元组而不是列表的问题是人们通常选择使用列表,因为他们实际上想要列表语义;你不能附加到一个元组,对它进行适当的排序,从中删除项等等。如果你不想让你的类级列表属性与子类共享,子类只能创建自己的副本:</p>
<pre><code>from copy import deepcopy
class SubClass(BaseClass):
default_sth = deepcopy(BaseClass.default_sth) # now SubClass has its own copy.
</code></pre>
<p>然后您的示例将输出<code>[]</code>,这是您希望的行为。如果您在<code>BaseClass</code>中使用一个元组,您的示例将抛出一个<code>AttributeError</code>(因为它试图在一个元组上调用<code>append</code>),并且代码需要更改为这个值来执行<code>append</code>的等效操作:</p>
^{pr2}$
<p>这样写起来有点痛苦,而且效率不高,因为要从tuple->;list->;tuple进行大量复制来转换。在</p>