类的继承中的super()

在Python类继承中,通过super()和显示调用父类初始化方法有不同的应用场景。super()可避免重复调用问题,但在处理带参数的多重继承时变得复杂。文章探讨了两种方式的优缺点,建议在单继承场景灵活选择,而在多重继承时避免使用super()以保持代码清晰。
摘要由CSDN通过智能技术生成

在python中,关于类的继承有很多场景和知识点。今天聚焦在一个场景:有一个父类A,类中定义了某个问题中的通用属性和方法(即后面的子类都需要用到),在子类B中需要继承这些属性和方法,同时添加自己特有的属性和方法,应该如何实现?

在子类中,继承并初始化父类属性的方式有两种:

  1. 显示调用父类的初始化函数,并且对属性进行初始化;
  2. 通过super()初始化父类属性;

对于方式1,代码:

class A:
    def __init__(self,a,b):
        self.a=a
        self.b=b
    def func(self):
        return self.a+self.b

class B(A):
    def __init__(self,x1,x2,x3,x4):
        A.__init__(self,a=x1,b=x2)#注意必须要传入self,相当于把B的实例传进去
        self.c=x3
        self.d=x4
        self.m=A.func(self)#同样必须传入self
        self.n=self.func()
>>>ins=B(1,2,10,20)
>>>print(ins.a,ins.b,ins.c,ins.d)
1 2 10 20
>>>print(ins.m,ins.n)
3 3
>>>print(ins.func())
3     

对于方式2,代码:

class A:
    def __init__(self,a,b):
        self.a=a
        self
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值