Python中, 继承中的重写super__init__()使用场景及原因

在Python中, super__init__()的使用通常出现子类的初始化方法(__init__)中, 也就是继承中的重写

目的是调用父类的初始化方法

使用原因:

1. 确保父类状态正确初始化: 父类可能有一些必须初始化的属性和状态, 如果不调用父类的__init__方法, 这些属性可能不会被正确设置, 从而导致子类对象的状态不完整或者错误

2. 避免代码重复: 如果子类中需要添加或者修改一些初始化逻辑, 但仍然需要父类中的初始化逻辑, 那么使用super__init__()可以避免重复编写父类中已有的初始化代码

3. 多重继承中的正确性: 在多重继承的情况下, super() 确保了方法解析顺序(MRO)的正确性, 每个父类的__init__() 方法只会被调用一次, 按照MRO顺序

4. 符合面向对象设计原理: 使用super__init__() 符合面向对象设计中的封装和继承原则, 子类通过继承父类来复用代码, 并使用super() 来确保父类中的行为得到正确的调用

class Parent:  
    def __init__(self):  
        self.parent_attribute = "I'm from Parent"  
  
class Child(Parent):  
    def __init__(self):  
        super().__init__()  # 调用父类的__init__方法  
        self.child_attribute = "I'm from Child"  
  
# 创建Child类的实例  
c = Child()  
  
# 访问父类和子类的属性  
print(c.parent_attribute)  # 输出: I'm from Parent  
print(c.child_attribute)  # 输出: I'm from Child

在这个例子中,Child类继承了Parent类。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值