class A(object):
def __init__(self, x):
self.x = x
def f(self, x):
return 2*x
def g(self, x):
return self.f(x)
class B(A):
def g(self, y):
return 3*y + self.x
class C1(B):
def __init__(self, x, y):
B.__init__(self,x)
self.y = y
def f(self, x):
return self.x + self.y
class C2(B):
def __init__(self, x, y):
B.__init__(self,x)
self.y = y
def f(self, x):
return x + self.x + self.y
a = A(5)
b = B(2)
c1 = C1(3,5)
c2 = C2(3,5)
当我做"表达式 c2.f(4) 的计算结果是什么?"时,我不确定类 C2 中 f 函数中的 self.x 指向什么。
你能给我一些建议吗?
c2.f(4)
是12。函数f
中 x 的值为 4,因为这是c2.f(4)
中的参数。c2self.x
的值是 3,因为C2
继承自B
,而 继承自A
,其中出现self.x = x
行。在这一行中,x
是c2 = C2(3,5)
行中输入的内容,因为它被分配给self.x
,所以c2
的self.x
是3。由于类C2
中的行self.y = y
,实例c2
的 y 值是在第c2 = C2(3,5)
行 5 中输入的值。4 + 3 + 5 等于 12。