python super

1. super函数的作用

  • super() 是用来调用父类(基类)的方法的内置函数。
  • 常用于子类重写父类方法时,在子类方法中调用父类的实现,以实现扩展而不是完全替换。

2. 你的注释详解

"""
要注意的问题:
1、可以在子类的任意方法中调用父类的任意方法
2、如果父类方法需要传参,则super函数调用时也要相应的传递实参
3、调用父类的方法时,self会指向本类,而不是父类
"""

解释

  1. 可以在子类的任意方法中调用父类的任意方法

    • 不仅限于__init__,任何子类方法都可以用super()调用父类的方法。
  2. 如果父类方法需要传参,则super函数调用时也要相应的传递实参

    • super().method(arg1, arg2),参数要和父类方法定义一致。
  3. 调用父类的方法时,self会指向本类,而不是父类

    • 也就是说,父类方法内部用到的self,其实是子类对象本身。

3. 你的代码结构

class User:
    def see(self):
        print('hello world')

class Admin(User):
    def see_message(self):
        pass

if __name__ == '__main__':
    admin = Admin()
    admin.see_message()

解释

  • User类有一个see方法。
  • Admin类继承自User,有一个see_message方法(目前是空的)。
  • 主程序中创建了Admin对象并调用see_message

4. 如何用super调用父类方法

假如你想在Adminsee_message方法中调用Usersee方法,可以这样写:

class Admin(User):
    def see_message(self):
        print("Admin特有的消息")
        super().see()  # 调用父类User的see方法

运行效果:

if __name__ == '__main__':
    admin = Admin()
    admin.see_message()

输出:

Admin特有的消息
hello world

5. super的注意事项

  • super()返回的是一个临时的父类对象,可以用来调用父类的方法。
  • 在多重继承时,super()会按照**方法解析顺序(MRO)**查找父类方法。
  • super().方法名(参数),参数要和父类方法一致。
  • 父类方法中的self依然是子类对象,不是父类对象。

6. 例子:父类方法需要参数

class User:
    def see(self, msg):
        print('User:', msg)

class Admin(User):
    def see_message(self):
        super().see('hello from admin')  # 需要传递参数

admin = Admin()
admin.see_message()
# 输出:User: hello from admin

7. 总结

  • super()用于在子类中调用父类的方法,常用于方法扩展和代码复用。
  • 可以在子类的任意方法中调用父类的任意方法。
  • 调用父类方法时要传递正确的参数。
  • 父类方法中的self始终指向子类对象。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

贵哥的编程之路(热爱分享 为后来者)

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值