lc88824 发表于 2025-4-11 07:11:13

self. log(message)是父类方法又是怎么跑到子类log方法的

self. log(message)是父类方法又是怎么跑到子类log方法的

FishC 发表于 2025-4-11 07:11:57

关于父类方法调用子类方法的原理

这个问题涉及面向对象编程中的继承和多态,用简单的例子说明:

假设父类和子类结构如下:

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]
查看完整版本: self. log(message)是父类方法又是怎么跑到子类log方法的