注:不是关于Calling a parent method in a child class .super()
我有三门课,比如说Parent
,Child1
和Child2
。Child1
和2都有methodCry()
,Parent
类有另一个方法,例如MakeChildrenStopCry()
其中调用了Cry()
。但是,Parent
类没有方法。我需要在Cry()
类中定义Cry()
吗?
因为我没有父类的任何对象,而且我总是使用子类,所以我只创建了“空函数”,因为继承只会用Parent
类中的函数否决这些空函数。
def MakeChildrenStopCry(self):
if self.Cry():
self.DoWhateverToStopCry(self)
def Cry(self)
return()
对于完整的示例代码you can check this但我认为上面应该是清楚的。
这不会在我的代码中造成任何问题,我只是想知道什么是正常的,或者如果它是更好的设置我的代码不同。
最佳答案
Python在这个级别上是相当有信心的程序员。即使类中没有定义cry
方法,也可以从该类调用它。Python将只信任您提供一个在调用时知道cry
方法的对象。
所以这很好:
class Parent:
def makeChildrenStopCry(self):
if self.cry():
self.doWhateverToStopCry()
class Children(Parent):
crying = False
def makeCry(self):
self.crying = True
def doWhateverToStopCry(self):
self.crying = False
def cry(self):
return self.crying
它在交互式会话中提供:
>>> child = Children()
>>> child.makeCry()
>>> print(child.crying)
True
>>> child.makeChildrenStopCry()
>>> print(child.crying)
False