5,python中的继承和多继承以及方法的重载和扩展

在这里插入图片描述在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

#继承时重写扩充父类的方法
class Person:
    def __init__(self,name,age):
        self.name=name
        self.age=age

    def prin(self):
        print('%s的年龄是%s'%(self.name,self.age))
"""
重写父类的方法有两种,
一种是覆盖,另一种就是对父类方法进行扩展(用到super()关键字)
覆盖:顾明思意,很简单就是直接在之类里把这个方法在写一遍,
在调用该名方法时它就会默认使用之类里的那个

扩展:就是原本父类的方法不丢,在额外扩展一些子类特殊需求的,
利用super类的实例化对象super().加上父类的方法

"""
class Student(Person):
    def __init__(self,name,age,score):
        super().__init__(name,age)#这里用的就是扩展
        self.score=score

    def prinn(self):
        self.prin()
        print('分数是%s'%self.score)

str=Student("小红",13,99)
str.prinn()


在这里插入图片描述


#多继承的相关知识
class A:
    def __init__(self):
        print("类A")
    def fa(self):
        print("a的方法")
class B:
    def __init__(self):
        print("类B")
    def fa2(self):#应该尽量避免与另一个父类里有相同的名
        print("b的方法")
class C(A,B):
    def __init__(self):#要是不写这个方法的话会怎么样?
        #会只执行输出“类A”,因为__init__会默认构造并执行,而C的两个父类都有__init__方法
        #所以,出现类里有重名的方法,所以它会默认只执行第一个继承类的方法
         A.__init__(self)
         B.__init__(self)

    def test(self):
        print("c")


c=C()
print(C.__mro__)#如果有重名它会按照什么顺序去执行方法
#c.fa() 出现同名时候,它会默认使用括号里的第一个类
#c.test()



"""
Python在多继承时,如果这些父类中有相同的方法名,
若在子类中使用时没有指定父类名,
则Python系统将从左往右按顺序搜索。

Python支持多继承,多继承的一般形式为:
    class  子类名(父类名1,父类名2, ...., 父类n):
           子类的类体语句


"""

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值