super方法写法

 

class Master(object):
def __init__(self):
self.kongfu = '[师父方法]'

def cake(self):
print(f'运用{self.kongfu}来实现')


class School(Master):
def __init__(self):
self.kongfu = '[666]'

def make_cake(self):
print(f'运用{self.kongfu}来实现')

super().__init__()
super().cake()


class Prentice(School):
def __init__(self):
self.kongfu = '[独创方法]'

def make_cake(self):
# 加自己的初始化的原因:如果不加这个自己的初始化,kongfu属性值是上一次调用的init内的kongfu属性值
self.__init__()
print(f'运用{self.kongfu}来实现')

# 子类调用父类的同名方法和属性:把父类的同名属性和方法再次封装
# def make_master_cake(self):
# # 父类类名.函数()
# # 再次调用初始化的原因:这里想要调用父类的同名方法和属性,属性在init初始化位置,所以需要再次调用init
# Master.__init__(self)
# Master.cake(self)
#
# def make_school_cake(self):
#
# School.__init__(self)
# School.make_cake(self)
# 需求: 一次性调用父类School Master的方法
def make_old_cake(self):
super().__init__()
super().make_cake()


# 3.用徒弟类创建对象,调用实例属性和方法
daqiu = Prentice()

daqiu.make_old_cake()

# 注意:使用super()可以自动查找父类,调用顺序遵循__mro__类属性的顺序。比较适合单继承使用。




 

posted @ 2021-11-05 22:35  冰溏  阅读(55)  评论(0编辑  收藏  举报