继承(1)

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

#定义父类
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__)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值