[英]Overriding Method Used in Base Class Python
我有以下几点:
class Parent:
@classmethod
def add_2(cls, number):
plus_1 = cls.add_1(number)
plus_2 = cls.add_1(number)
return plus_2
def add_1(cls, number):
return number + 1
class Child(Parent):
@classmethod
def add_1(cls, number):
return number + 2
Child.add_1(5)
Child.add_2(5)
我希望Child.add_2(5)返回9,但返回7。有人可以解释为什么会发生这种现象吗? 通过覆盖子类中的add_2来修复它很容易,但是它似乎过于笨拙。
我假设您基于以下事实期望Child.add_2(5)
返回9 :
Child.add_1
将2加到它收到的参数中(最初是5 ) Child.add_2
(从继承Parent
)调用Child.add_1
两次(所以它将使意义上,5 + 2 + 2 = 9) 问题出在Parent.add_2
:
plus_1 = cls.add_1(number)
plus_2 = cls.add_1(number)
cls.add_1
被调用两次,但是第一次调用( plus_1
)的结果被忽略, 第二次调用从5的 number
开始,结果为7 。
要纠正这个问题(我认为这是因为复制一个错字/粘贴),修改cls.add_1
2 日呼吁:
plus_2 = cls.add_1(plus_1)
考虑第一个通话的结果。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.