注:不是关于Calling a parent method in a child class .super()
我有三门课,比如说ParentChild1Child2Child1和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

08-24 16:39