传承麻烦. - Python

Mar*_*k D 5 python inheritance

有人在这个网站上遇到了同样的问题,但答案与我遇到的问题无关.
继承 - 方法调用

请考虑以下类定义.

class C1(object):
    def f(self):
        return 2*self.g()

    def g(self):
        return 2

class C2(C1):
    def f(self):
        return 3*self.g()


class C3(C1):
    def g(self):
        return 5

class C4(C3):
    def f(self):
        return 7*self.g()

obj1 = C1()
obj2 = C2()
obj3 = C3()
obj4 = C4()
Run Code Online (Sandbox Code Playgroud)

对于此问题,您将考虑在调用方法时调用哪些方法f.因此,例如,当obj1.f()被调用时,该f方法C1被调用它调用g的方法C1.这可以表示为表单的"调用列表"

['C1.f', 'C1.g'] 
Run Code Online (Sandbox Code Playgroud)

写三篇赋值语句,分别分配"呼叫清单"对obj2.f()给变量obj2_calls,分配"呼叫列表"为obj3.f()给变量obj3_calls并分配"呼叫清单"对obj4.f()给变量obj4_calls.

我理解第一项任务没有问题,obj2_calls = ['C2.f', 'C1.g']
但是我正在试图找出下一个任务.我想,因为没有C3.f列表会,['C1.f']但不幸的是,它不是.

只是为了清理,这是IS的功课

A. *_*das 1

obj3_calls 是['C1.f', 'C3.g']. C3.f正如您所指出的,该类中没有,但该方法是从 继承的C1。该方法依次调用self.g,并且由于C3.g 定义,因此它会重写从 继承的方法C1