sanyyoyo 发表于 2020-2-8 14:34:01

求助一个子类同名继承父类的函数调用问题

本帖最后由 sanyyoyo 于 2020-2-8 14:52 编辑

class Master(object):   #父类Maser
    def __init__(self):
      self.kongfu = '[古法煎饼果子配方]'
    def make_cake(self):
      print(f'运用{self.kongfu}制作煎饼果子')

class School(object):#父类School
    def __init__(self):
      self.kongfu = '[黑马煎饼果子配方]'
    def make_cake(self):
      print(f'运用{self.kongfu}制作煎饼果子')

class Prentice(School, Master):#子类Prentice
   
    def __init__(self):
      self.kongfu = '[独创煎饼果子配方]'
   
    def make_cake(self):
      self.__init__()
      print(f'运用{self.kongfu}制作煎饼果子')
   
    def make_master_cake(self):
      Master.__init__(self)
      Master.make_cake(self)
   
    def make_school_cake(self):
      School.__init__(self)
      School.make_cake(self)

# 徒孙类
class Tusun(Prentice):
    pass
xiaoqiu = Tusun()
xiaoqiu.make_cake()
xiaoqiu.make_school_cake()
xiaoqiu.make_master_cake()

代码如上,执行结果如下:
运用[独创煎饼果子配方]制作煎饼果子
运用[黑马煎饼果子配方]制作煎饼果子
运用[古法煎饼果子配方]制作煎饼果子

我的问题是:当对象调用make_cake()时,函数内部有一条print 的命令,可以执行出打印结果我能理解,可是在调用xiaoqiu.make_school_cake()和xiaoqiu.make_master_cake(),这两个函数是怎么去调用上一段函数里面的print命令的呢?

zltzlt 发表于 2020-2-8 15:24:27

xiaoqiu.make_school_cake() --> School.__init__(self) --> School.make_cake(self) --> print(f'运用{self.kongfu}制作煎饼果子')(self.kongfu 为 '[独创煎饼果子配方]')

xiaoqiu.make_master_cake() --> Master.__init__(self) --> Master.make_cake(self) --> print(f'运用{self.kongfu}制作煎饼果子')(self.kongfu 为 '[古法煎饼果子配方]')

dlnb526 发表于 2020-2-8 15:38:32



如图所示

sanyyoyo 发表于 2020-2-8 19:39:37

非常感谢,类和对象还是比较抽象的,我还要多体会,感谢两位前辈的指点
页: [1]
查看完整版本: 求助一个子类同名继承父类的函数调用问题