擅长:python、mysql、java
<p>加上上面的答案。</p>
<p>Python 3.0有一个单独的类实现。子类化是Python3.0的一个特性,而不是Python2.0。</p>
<p>所以如果你安装了python 3.x并且</p>
<pre><code>class Foo():
pass
class Bar(Foo):
pass
print(Foo.__subclasses__())
</code></pre>
<p>它不会给出任何属性错误。</p>
<p>现在,通过在每个类定义中继承“object”基类,将相同的功能扩展到Python 2.0类。</p>
<p>因此,如果在Python 2.x中这样做:</p>
<pre><code>class Foo(object):
pass
class Bar(Foo):
pass
print(Foo.__subclasses__())
</code></pre>
<p>由于您正在继承新类Foo中的<strong>object</strong>基类,因此继承了3.x样式的类,并且不会出现属性错误。</p>
<p>但是在Python 2.x中</p>
<pre><code>class Foo():
pass
class Bar(Foo):
pass
print(Foo.__subclasses__())
</code></pre>
<p>这意味着,新样式类没有被继承,并且由于<strong>子类</strong>是新样式类的一部分,它将抛出属性错误。</p>
<p>所以请记住,如果要将任何Python 3.x类功能扩展到Python 2.x,您需要在类定义中继承<strong>object</strong>类。</p>
<p>希望这有帮助。</p>