多重继承_python里类的继承与super()方法

f852235c7cc44c42a8d1518e6b579fdd.png

python里类的继承有单继承与多重继承,继承的定义里需要用到super()方法。

class Big_family:
     #类属性的创建​
    fmai_num=4
    fmai_add='希望石家庄抗疫早日成功小区'
    member='父母,儿子,女儿'

    #初始化对象属性的构造方法,实例化类时此方法会自动执行,如果实例化类时给类传了参数,则此参数也是呈交给此方法来处理输入的数据
    def __init__(self,name,sex,age):
        self.name=name
        self.sex=sex
        self.age=age

    #类方法的创建,此与函数的定义相类似,区别在于类方法的创建首个形参必须是self    
    def self_introduce(self):
        print('我的名字是 '+self.name+',n性别 '+ self.sex+',n年龄 '+str(self.age)+'。')

    #类属性设置与获取方法的创建
    def set_age(self,age):
        self.age=age
    def get_sex(self):
        return self.sex
    def get_name(self):
        return self.name
    def get_age(self):
        return self.age

class Small_fami(Big_family):
    def __init__(self,name,sex,age,weight):
        super().__init__(name,sex,age) #此处不能再有self参数
        #Big_family.__init__(self,name,sex,age) #也可以用基类名称调用构造函数,这种调用限于单继承情况下,但此时又需要有self参数
        self.weight=weight

    def self_introduce(self):
        print('我来自小家庭')


class Father(Small_fami):
    #此处虽为多重继承但参数只需要传入一个,因Small_fami本身是由Big_family继承而来,故不再需要传入Big_family
    def __init__(self,name,sex,age,weight):
        super().__init__(name,sex,age,weight) #此处需要传入所有被继承类的所有参数

    def self_introduce(self):
        super(Father,self).self_introduce()
        #多重继承中子类调用方法的顺序是一种MRO算法。当调用super()时,其实是调用MRO顺序中的下一个类的方法
        #即Father类所创建对象调用此self_introduce()方法时,其实调用的是基类中的self_introduce()方法,结果为'我来自小家庭'
        
    def work(self,factory,place):
        self.factory=factory
        self.place=place
        print('我工作在'+self.place,self.factory)

e63aa3a77e2cd5f689c6362273c64a36.png

祝愿石家庄抗疫早日成功,英雄早日凯旋!!!

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值