擅长:python、mysql、java
<p>您不需要更改返回对象的类型。您需要做的是使用子类的方法正在使用的<code>cls</code>调用父类的方法实现。这是<a href="http://docs.python.org/2/library/functions.html#super" rel="nofollow">^{<cd2>}</a>的目的之一。首先,您需要确保使用的是新样式的类:</p>
<pre><code>class Parent(object):
# continue as usual
</code></pre>
<p>Python有两个类系统的实现,因为它们第一次没有正确地实现。始终从<code>object</code>继承如果您不是从其他任何东西继承,以确保您使用的是更新、更好的系统。你知道吗</p>
<p>现在,<code>super</code>。不要使用<code>Parent.get(name)</code>,而是使用<code>super</code>调用:</p>
<pre><code>p = super(Child, cls).get(name)
</code></pre>
<p><code>p</code>将具有正确的类型,因为父方法中的<code>cls</code>与子方法中的<code>cls</code>是同一类。(请注意,如果以后添加了<code>Grandchild</code>类,此行将生成<code>Grandchild</code>对象,而不是<code>Child</code>对象。这很可能是正确的行为。)</p>