python 继承初始化相关, super.__init__()

https://blog.csdn.net/weixin_43790276/article/details/90742328

普通继承时:

class Electrical(object):
 
    def __init__(self, name):
        self.name = name
        print('Electrical init')
 
 
class Phone(Electrical):
 
    def __init__(self, name, price):
        Electrical.__init__(self, name)
        self.price = price
        print('Phone init')
 
 
class Computer(Electrical):
 
    def __init__(self, name, config):
        Electrical.__init__(self, name)
        self.config = config
        print('Computer init')
 
 
class HuaWei(Phone, Computer):
 
    def __init__(self, name, price, config):
        Phone.__init__(self, name, price)
        Computer.__init__(self, name, config)
        print('HuaWei init')
 
 
h = HuaWei('huawei', 100, 'i7')

Electrical init
Phone init
Electrical init
Computer init
HuaWei init

上方代码 Electrical 初始化了两遍
使用super

class Electrical(object):
 
    def __init__(self, name):
        self.name = name
        print('Electrical init')
 
 
class Phone(Electrical):
 
    def __init__(self, price, *args):
        super(Phone, self).__init__(*args)
        self.price = price
        print('Phone init')
 
 
class Computer(Electrical):
 
    def __init__(self, config, *args):
        super(Computer, self).__init__(*args)
        self.config = config
        print('Computer init')
 
 
class HuaWei(Phone, Computer):
 
    def __init__(self, name, price, config):
        super(HuaWei, self).__init__(name, price, config)
        print('HuaWei init')
 
 
h = HuaWei('huawei', 100, 'i7')

Electrical init
Computer init
Phone init
HuaWei init
posted @ 2023-01-28 10:09  道友请留步W  阅读(16)  评论(0编辑  收藏  举报