擅长:python、mysql、java
<p>为什么不使用python内置机制进行继承呢?在</p>
<p>实例函数<code>actions</code>对于派生类<code>B</code>是相同的。当被调用时,它得到实例<code>self</code>,然后就像在实例本身上调用函数一样:Python的继承机制调用<code>B</code>的方法,如果它在那里或者回退到<code>A</code>的实现。在</p>
<p><em>EDIT:</em>l4mpi建议指出,这将每次创建映射,因此我将action_映射更改为一个属性。在</p>
<pre><code>class A():
def actions(self, action):
if not hasattr(self, "actions_map"):
self.actions_map = {
"IDLE" : self.idle,
"FIRED" : self.fired,
"MOVING" : self.move,
"RESET" : self.reset,
}
return self.actions_map[action]
def idle(self):
print "A idle"
pass
def fired(self):
print "A fired"
def move(self):
print "A move"
def reset(self):
print "A reset"
class B(A):
def fired(self):
print "B fired"
a = A()
b = B()
a.actions("FIRED")()
b.actions("FIRED")()
b.actions("MOVING")()
>> A fired
>> B fired
>> A move
</code></pre>