单继承意思就是一个类同时继承了一个父类。
class Master(object): def __init__(self): self.kongfu='古法鸡蛋灌饼' def cook(self): print(f'运用{self.kongfu}做饼。') #Student继承了Master类 class Student(Master): pass lihua = Student() lihua.cook() #运用古法鸡蛋灌饼做饼。
多继承意思就是一个类同时继承了多个父类。
class Master(object): def __init__(self): self.kongfu='古法鸡蛋灌饼' def cook(self): print(f'运用{self.kongfu}做饼。') class School(object): def __init__(self): self.kongfu='正宗鸡蛋灌饼' def cook(self): print(f'运用{self.kongfu}做饼。') #Student继承了Master类 class Student(School,Master): pass lihua = Student() lihua.cook() #运用正宗鸡蛋灌饼做饼。
当一个类有多个⽗类的时候,默认使用第一个⽗类的同名属性和⽅法。
class Master(object): def __init__(self): self.kongfu='古法鸡蛋灌饼' def cook(self): print(f'运用{self.kongfu}做饼。') #Student继承了Master类 class Student(Master): def __init__(self): self.kongfu='创新鸡蛋灌饼' def cook(self): print(f'运用{self.kongfu}做饼。') lihua = Student() lihua.cook() #运用创新鸡蛋灌饼做饼。
⼦类和父类具有同名属性和方法,默认使⽤子类的同名属性和方法。
class Master(object): def __init__(self): self.kongfu='古法鸡蛋灌饼' def cook(self): print(f'运用{self.kongfu}做饼。') class School(Master):#继承Master def __init__(self): self.kongfu='正宗鸡蛋灌饼' def cook(self): print(f'运用{self.kongfu}做饼') class Student(School):#继承School def __init__(self): self.kongfu='创新鸡蛋灌饼' def cook(self): print(f'运用{self.kongfu}做饼') #打印出继承顺序 print(Student.__mro__) #(<class '__main__.Student'>, <class '__main__.School'>, <class '__main__.Master'>, <class 'object'>)
两种方法:super();父类.初始化/再调用
class Master(object): def __init__(self): self.kongfu='古法鸡蛋灌饼' def cook(self): print(f'运用{self.kongfu}做饼。') class School(Master): def __init__(self): self.kongfu='正宗鸡蛋灌饼' def cook(self): print(f'运用{self.kongfu}做饼') def make_master_cook(self): super().__init__() super().cook() class Student(School): def __init__(self): self.kongfu='创新鸡蛋灌饼' def cook(self): print(f'运用{self.kongfu}做饼') def make_school_cook(self):#调用 父类 super().__init__() super().cook() #调用 古法鸡蛋灌饼 def make_master_cook(self):#调用 祖父类 #方法一 super().make_master_cook() #方法二 Master.__init__(self) Master.cook(self) lihua = Student() lihua.make_school_cook()#调用 父类 lihua.make_master_cook()#调用 祖父类
打印结果:
属性和方法前面加上 ‘__’(两条下划线)即可。
class Master(object): def __init__(self): self.kongfu='古法鸡蛋灌饼' #私有属性 self.__money = 4000 def cook(self): print(f'运用{self.kongfu}做饼。') #私有方法 def __make_money(self): print(self.__money) #Student继承了Master类 class Student(Master): pass lihua = Student() print(lihua.__money)#报错 lihua.__make_money()#报错
利用实例方法 get_XX 来获取,用 set_XX 来修改。
class Master(object): def __init__(self): self.kongfu='古法鸡蛋灌饼' #私有属性 self.__money = 4000 def cook(self): print(f'运用{self.kongfu}做饼。') #获取私有属性值 def get_money(self): return self.__money #修改私有属性值 def set_money(self,new_money): self.__money=new_money #Student继承了Master类 class Student(Master): pass lihua = Student() print(lihua.get_money())#4000 lihua.set_money(100) print(lihua.get_money())#100