继承(1)

    技术2024-11-06  11

    了解继承——子类继承父类所有的属性和方法

    #定义父类 class A(object): def __init__(self): self.num = 1 def info_print(self): print(self.num) #定义子类 class B(A): pass #创建对象,验证结论 result = B() result.info_print()

    单继承——一个子类继承一个父类(大概状况与上面的例子相同,为保持队形一致,再次书写)

    #师傅类 class Master(): def __init__(self):#属性 self.kongfu = '[古法煎饼果子配方]' def make_cake(self):#方法 print(f'{self.kongfu}制作煎饼果子') #定义子类 class Prentice(Master):#表示Prentice继承Master pass result = Prentice() print(result.kongfu) result.make_cake()

    多继承——一个子类同时继承多个父类(如下例:定义两个父类,由子类继承)

    class Master():#父类 def __init__(self):#属性 self.kongfu = '[古法煎饼果子配方]' def make_cake(self):#方法 print(f'{self.kongfu}制作煎饼果子') class School():父类 def __init__(self): self.kongfu = '[新式煎饼果子配方]' def make_cake(self): print(f'{self.kongfu}制作煎饼果子') class Prentice(Master,School):#子类 pass result = Prentice() print(result.kongfu) result.make_cake() #如果一个类继承多个父类,那么子类优先继承前一个父类否认同名属性

    子类重写父类同名和方法——当子类和父类具有同名的属性和方法的时候,子类如何输出自己的同名属性和方法

    class School(): def __init__(self): self.kongfu = '[新式煎饼果子配方]' def make_cake(self): print(f'{self.kongfu}制作煎饼果子') class Prentice(Master,School): def __init__(self): self.kongfu = '[独创煎饼果子配方]' def make_cake(self): print(f'独创{self.kongfu}制作煎饼果子') result = Prentice() print(result.kongfu) result.make_cake() #输出:[独创煎饼果子配方] 独创[独创煎饼果子配方]制作煎饼果子 #结论:如果子类与父类拥有同名的属性和方法的时候,子类创建对象调用属性和方法的时候,优先调用子类的同名属性和方法 print(Prentice.__mro__)#使用__mor__函数去查看各个类的继承情况与属性

    子类调用父类同名属性和方法——当子类与父类拥有相同名字的属性与方法时,如何调用父类的方法和属性

    ''' 子类重写父类同名属性和方法 ''' class Master(): def __init__(self):#属性 self.kongfu = '[古法煎饼果子配方]' def make_cake(self):#方法 print(f'{self.kongfu}制作煎饼果子') class School(): def __init__(self): self.kongfu = '[新式煎饼果子配方]' def make_cake(self): print(f'{self.kongfu}制作煎饼果子') class Prentice(Master,School): def __init__(self): self.kongfu = '[独创煎饼果子配方]' def make_cake(self): print(f'独创{self.kongfu}制作煎饼果子') def make_master_cake(self):#子类调用父类的同名方法和属性——将父类的同名方法和属性在次封装 #父类名.函数名 Master.__init__(self)#注意:都需要加self,为对象参数传入保留位置 Master.make_cake(self) result = Prentice() print(result.kongfu) result.make_master_cake() print(Prentice.__mro__)
    Processed: 0.032, SQL: 9