self. log(message)是父类方法又是怎么跑到子类log方法的
self. log(message)是父类方法又是怎么跑到子类log方法的 关于父类方法调用子类方法的原理这个问题涉及面向对象编程中的继承和多态,用简单的例子说明:
假设父类和子类结构如下:
class Parent:
def execute(self):
self.log("正在执行")# 这里调用的是子类重写后的log方法
def log(self, msg):
print(f"父类记录:{msg}")
class Child(Parent):
def log(self, msg):
print(f"子类记录:{msg}")
# 使用时
obj = Child()
obj.execute()# 输出会是"子类记录:正在执行"
关键原理:
[*]当子类重写log方法后,self始终指向子类实例
[*]父类execute方法中的self.log会按照继承链查找:先找子类是否有log方法
[*]这种特性叫做动态绑定(运行时决定调用哪个方法)
简单记忆口诀:子类重写父类方法后,通过子类对象调用的任何方法(包括父类方法)都会优先使用子类的新版本
以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
页:
[1]