python中super带参数_在python中,如何将super()与一个参数一起使用

Python函数对象是descriptors,Python使用描述符协议将函数绑定到实例。这个过程产生一个边界方法。在

绑定是调用方法时出现“magic”self参数的原因,也是当您试图将属性用作实例上的属性时,property对象自动调用方法的原因。在

当您试图使用一个描述符协议来查找父类上的方法时,带有两个参数的super()调用同一个描述符协议;super(Foo, self).bar()将遍历Foo父类,直到找到属性bar,如果该对象是描述符,则它将绑定到self。调用bar然后调用绑定方法,该方法反过来调用作为self参数传入的函数bar(self)。在

为此,super()对象存储要绑定的类(第一个参数)和self(第二个参数),和分别将__thisclass__、__self__和{}属性绑定在一起:>>> class Foo:

... def bar(self):

... return 'bar on Foo'

...

>>> class Spam(Foo):

... def bar(self):

... return 'bar on Spam'

...

>>> spam = Spam()

>>> super(Spam, spam)

, >

>>> super(Spam, spam).__thisclass__

>>> super(Spam, spam).__self__

>>> super(Spam, spam).__self_class__

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值