1. super函数的作用
super()是用来调用父类(基类)的方法的内置函数。- 常用于子类重写父类方法时,在子类方法中调用父类的实现,以实现扩展而不是完全替换。
2. 你的注释详解
"""
要注意的问题:
1、可以在子类的任意方法中调用父类的任意方法
2、如果父类方法需要传参,则super函数调用时也要相应的传递实参
3、调用父类的方法时,self会指向本类,而不是父类
"""
解释
-
可以在子类的任意方法中调用父类的任意方法
- 不仅限于
__init__,任何子类方法都可以用super()调用父类的方法。
- 不仅限于
-
如果父类方法需要传参,则super函数调用时也要相应的传递实参
super().method(arg1, arg2),参数要和父类方法定义一致。
-
调用父类的方法时,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调用父类方法
假如你想在Admin的see_message方法中调用User的see方法,可以这样写:
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始终指向子类对象。
1万+

被折叠的 条评论
为什么被折叠?



