python子类重用父类的两种方式

本文介绍了Python中实现继承的两种方法:通过显式调用父类方法和使用super函数。super函数允许代码更简洁地调用基类方法,简化了多重继承场景下的方法解析顺序。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

#在子类派生的新方法中重用父类功能的两种方法
# 方式一:与继承无关
# 指名道姓法,直接用类名.函数名的方法
# 注意只能当普通函数用,需要把所有的值传入

class OldboyPeople:
    school='oldboy'

    def __init__(self,name,age,sex):
        self.name=name
        self.age=age
        self.sex=sex

class OldboyStudent(OldboyPeople):
    def __init__(self,name,age,sex,stu_id):
        OldboyPeople.__init__(self,name,age,sex)#指明道姓法
        self.stu_id=stu_id

    def choose_course(self):
        print('%s is choosing course'%self.name)


# 方式二:严格来继承属性查找关系

# super()会得到一个特殊的对象,该对象就是专门用来访问父类中的属性的(按照继承的关系 )
#
# super().__init__(不用为self传值)
#
# 注意:super的完整的用法是super(自己的类名,self),在python2中要写完整,而在
# python3则不用,直接用super()

class OldboyPeople:
    school='oldboy'
    def __init__(self,name,age,sex):
        self.name=name
        self.age=age
        self.sex=sex

class OldboyStudent(OldboyPeople):

    def __init__(self,name,age,sex,stu_id):
        super(OldboyStudent,self).__init__(name,age,sex)
        self.stu_id=stu_id

    def choose_course(self):
        print('%s is choosing course'%self.name)

stu1=OldboyStudent('林',18,'male',3)
print(stu1.__dict__)
print(OldboyStudent.mro())


class A:
    def f1(self):
        print('a.f1')

class B:
    def f2(self):
        super().f1()#按C的查找顺序找
        print('b.f2')

class C(B,A):
    pass


obj=C()
print(C.mro())
obj.f2()
#C->B->A->object
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值