Python 子类继承多个父类属性

本文探讨了Python中多继承时可能出现的属性继承误区,指出使用`super()`初始化单个父类会导致其他父类属性丢失。正确的继承方式是显式调用每个父类的`__init__`方法。通过示例代码展示了如何正确初始化多个父类,确保所有属性都能被子类继承。
摘要由CSDN通过智能技术生成

Python 子类继承多个父类属性

可能存在的误区

python允许子类同时继承多个父类。但是在子类初始化父类时,单继承和多继承稍有不同。使用单继承的初始化方法会导致父类属性无法全部继承。
单继承方式是错误的,如下:

class A:
    def __init__(self):
        self.a = 'a'

class B:
    def __init__(self):
        self.b = 'b'

class C(A, B):
    def __init__(self):
        super().__init__()

c = C()
print(c.a)
print(c.b)

能够正确打印出a的值,但是print(c.b)会报错:
AttributeError: ‘C’ object has no attribute ‘b’

正确继承方法

同时继承多个父类时,可以显式的初始化每个父类,并且是用父类名初始化。如下所示:

class A:
    def __init__(self):
        self.a = 'a'

class B:
    def __init__(self):
        self.b = 'b'

class C(A, B):
    def __init__(self):
        A.__init__(self)
        B.__init__(self)

c = C()
print(c.a)
print(c.b)
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值