super()函数的正确使用方法

class Base:
    def __init__(self, value):
        self.value = value


class Two(Base):
    def __init__(self, value):
        super(Two, self).__init__(value)
        self.value += 3


class One(Base):
    def __init__(self, value):
        super(One, self).__init__(value)  # super(本身类名,self).方法名(参数)这样就可以调用父类的方法和参数了
        self.value *= 2


class Ways(Two, One):
    # super是继承父代
    def __init__(self, value):
        super(Ways, self).__init__(value)


foo = Ways(5)
print(foo.value)  # 菱形继承问题
foo = One(5)
print(foo.value)
foo = Two(5)
print(foo.value)


class One(Base):
    def __init__(self, value):
        super(One, self).__init__(value * 2)

class Two(Base):
    def __init__(self, value):
        super(Two, self).__init__(value + 3)

class Ways(One, Two):
    def __init__(self, value):
        super(Ways, self).__init__(value)

foo = Ways(5)
print(foo.value)  # 13


foo = One(5)
print(foo.value)

1.super(本身类名,self).方法名(参数)这样就可以调用父类的方法和参数了,super()内也可不加参数
2.规律是super是按调用的次序执行,super后面的语句是逆向执行的。

有2段示例代码,不同的在于value有没有用self.value表示。用self.value表示传入的参数,会产生类似递归的效果进来的One,Two,返回是Two,One。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值