1.子类调用父类的同名属性和方法
# 大师类 object 基类 class Master(object): def __init__(self): # self.kongfu='[大师煎饼果子配方]' def make_cake(self): print(f'运用{self.kongfu}制作煎饼果子配方') # 学校类 class School(object): def __init__(self): self.kongfu='[连锁机构大师煎饼果子配方]' def make_cake(self): print(f'运用{self.kongfu}制作煎饼果子配方') # 徒弟类 继承学校类和大师类 class Prentice(School,Master): def __init__(self): self.kongfu='[独创煎饼果子配方]' def make_cake(self): # 徒弟类的init被初始化 确定徒弟类的initial一定会被执行 # self.kongfu=【独创煎饼果子配方】 self =Tom self.__init__() print(f'运用{self.kongfu}制作煎饼果子配方') ##使用大师的配方制作煎饼果子 def make_master_cake(self): # 调用大师的init函数 self = tom Master.__init__(self) # 执行完上一行代码 self.kongfu = "[大师煎饼果子配方]" print(f'运用{self.kongfu}制作煎饼果子配方') def make_school_cake(self): School.__init__(self) print(f'运用{self.kongfu}制作煎饼果子配方') if __name__ == '__main__': # 实列化一个徒弟类的对象 Tom = Prentice() # 调用Make_cake() Tom.make_cake() Tom.make_master_cake() Tom.make_school_cake() Tom.make_cake()
2.多层继承
# 大师类 object 基类 class Master(object): def __init__(self): # self.kongfu='[大师煎饼果子配方]' def make_cake(self): print(f'运用{self.kongfu}制作煎饼果子配方') # 学校类 class School(object): def __init__(self): self.kongfu='[连锁机构大师煎饼果子配方]' def make_cake(self): print(f'运用{self.kongfu}制作煎饼果子配方') # 徒弟类 继承学校类和大师类 class Prentice(School,Master): def __init__(self): self.kongfu='[独创煎饼果子配方]' def make_cake(self): # 徒弟类的init被初始化 确定徒弟类的initial一定会被执行 # self.kongfu=【独创煎饼果子配方】 self =Tom self.__init__() print(f'运用{self.kongfu}制作煎饼果子配方') #使用大师的配方制作煎饼果子 def make_master_cake(self): # 调用大师的init函数 self = tom Master.__init__(self) # 执行完上一行代码 self.kongfu = "[大师煎饼果子配方]" print(f'运用{self.kongfu}制作煎饼果子配方') def make_school_cake(self): School.__init__(self) print(f'运用{self.kongfu}制作煎饼果子配方') # 徒孙类 继承徒弟类 class Tusun(Prentice): pass if __name__ == '__main__': # 实列化一个徒孙类的对象 tusun = Tusun() # 使用师傅的配方 tusun.make_cake() # 使用大师的配方 tusun.make_master_cake() # 使用学校的配方 tusun.make_school_cake()
3.super()超类的使用
# 大师类 object 基类 class Master(object): def __init__(self): # self.kongfu='[大师煎饼果子配方]' def make_cake(self): print(f'运用{self.kongfu}制作煎饼果子配方') # 学校类 class School(object): def __init__(self): self.kongfu='[连锁机构大师煎饼果子配方]' def make_cake(self): print(f'运用{self.kongfu}制作煎饼果子配方') ##super() = Master使用的是父类的方法 super().__init__() super().make_cake() # 徒弟类 继承学校类和大师类 class Prentice(School,Master): def __init__(self): self.kongfu='[独创煎饼果子配方]' def make_cake(self): # 徒弟类的init被初始化 确定徒弟类的initial一定会被执行 # self.kongfu=【独创煎饼果子配方】 self =Tom self.__init__() print(f'运用{self.kongfu}制作煎饼果子配方') ##使用大师的配方制作煎饼果子 def make_master_cake(self): # 调用大师的init函数 self = tom Master.__init__(self) # 执行完上一行代码 self.kongfu = "[大师煎饼果子配方]" print(f'运用{self.kongfu}制作煎饼果子配方') def make_school_cake(self): School.__init__(self) print(f'运用{self.kongfu}制作煎饼果子配方') def make_old_cake(self): # super() = 当前类的父类(超类) = school类 print(super()) # 调用school 的init函数 super().__init__() # 调用school类的方法 super().make_cake() if __name__ == '__main__': # Jerry 是徒弟类的对象 # #Prentice的父类是School,School的父类是Master Jerry = Prentice() # 调用徒弟类的方法 Jerry.make_old_cake() 4. 私有属性和方法
# 大师类 class Master(object): def __init__(self): pass # 学校类 class School(object): def __init__(self): pass # 徒弟类 继承学校类和大师类 class Prentice(School, Master): def __init__(self): # 实列属性 子类可以使用 self.kongfu = '[独创煎饼果子配方]' # 定义私有属性 子类不能使用 self.__price = '2000万' # 普通方法 子类可以使用 def make_cake(self): print(f'运用{self.kongfu}制作煎饼果子') # 私有方法 子类不能使用 def __get_money(self): print('这是技术不能传给你') # 徒孙类 class Tusun(Prentice): pass if __name__ == '__main__': tusun = Tusun() print(tusun.kongfu) # 使用普通属性 # print(tusun.__price) # 使用私有属性 报错 tusun.make_cake() # 使用普通方法 # tusun.__get_money() # 使用私有方法
5.获取私和修改有属性
# 大师类 class Master(object): def __init__(self): pass # 学校类 class School(object): def __init__(self): pass # 徒弟类 继承学校类和大师类 class Prentice(School, Master): def __init__(self): # 实列属性 子类可以使用 self.kongfu = '[独创煎饼果子配方]' # 定义私有属性 子类不能使用 self.__price = '2000万' # 普通方法 子类可以使用 def make_cake(self): print(f'运用{self.kongfu}制作煎饼果子') # 私有方法 子类不能使用 def __get_money(self): print('这是技术不能传给你') # 徒孙类 class Tusun(Prentice): pass if __name__ == '__main__': tusun = Tusun() print(tusun.kongfu) # 使用普通属性 # print(tusun.__price) # 使用私有属性 报错 tusun.make_cake() # 使用普通方法 # tusun.__get_money() # 使用私有方法