【Python基础教程】super()函数的正确使用方法

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

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

用value表示则是按照顺序传递的。

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

程序1:

foo = Ways(5)
  • 先调用super(Ways, self).__init__(value)
  • 再调用super(One, self).__init__(value)super(Two, self).__init__(value)
  • 再调用self.value = value,此时self.value为5

其后类似递归的逐渐返回

  • 调用self.value += 3, self.value为8
  • 调用self.value *= 2,self.value为16,注意进来的One,Two,返回是Two,One
'''
学习中遇到问题没人解答?小编创建了一个Python学习交流QQ群:531509025
寻找有志同道合的小伙伴,互帮互助,群里还有不错的视频学习教程和PDF电子书!
'''
class One(Base):
   def __init__(self, value):
       super(One,self).__init__(value)# super(本身类名,self).方法名(参数)这样就可以调用父类的方法和参数了
       self.value *= 2


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


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

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

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


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

程序2:

foo = Ways(5)
  • 先调用super(Ways, self).__init__(value)
  • 再调用super(One, self).__init__(value * 2)super(Two, self).__init__(value + 3),然后调用self.value = value----One调用Base,使self.value为5,运行One,self.value为10,注意Two不再调用Base使self.value再为5,

直接加3,变成13

规律是super是按调用的次序执行,super后面的语句是逆向执行的。

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
  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值