<p>把<code>Der2</code>变成<code>Der1</code>的子类,就完成了。你知道吗</p>
<pre><code>class Base:
def Foo(self):
pass
# First derived class
class Der1(Base):
def OwnFoo(self):
# Do something 1
def OwnFoo2(self):
# Do something 2
def Foo(self):
# Do something 3
# Second derived class (subclasses Der1)
class Der2(Der1):
pass
</code></pre>
<p>在<code>Der2</code>中您想要专门化的任何行为都可以添加到类定义中。如果在<code>Der2</code>(例如<code>Der2.OwnFoo()</code>)中创建一个同名的新方法,那么它将重载从<code>Der1</code>继承的默认方法。你知道吗</p>
<p><strong>编辑:</strong>如果不能更改父类,请将所有要继承的行为放在基类中,记住可以重载或自定义子类中的任何方法。你知道吗</p>
<p>在代码中:</p>
<pre><code># Base class
class Base:
def Foo1(self):
# Do something 1
def Foo2(self):
# Do something 2
def Foo(self):
# Do something 3
# First derived class, inherits everything from Base
class Der1(Base):
pass
# Second derived class
class Der2(Base):
pass
</code></pre>
<p>您可以使用一个“技巧”来调用从父级继承的原始方法,捕获返回值,然后自定义行为。只有当方法实际返回一个值时,这才有效;如果方法在类中操纵属性,这可能是危险的,除非这是您想要的和期望的。你知道吗</p>
<p>在代码中:</p>
<pre><code># Second derived class, with customized methods
class Der2(Base):
# Anything that is not explicitly define is inherited from parent
# as-is.
def Foo(self):
# My Foo() overloads Base.Foo() inherited from parent class.
# Do something "special" 3
def Foo1(self):
# Calls parent Base.Foo1() and then manipulates return data.
base_output = Base.Foo1(self)
# Do something "special" 1 with 'base_output'
</code></pre>