首页 > 解决方案 > Python 2.7 继承 - 我可以在不更改子代码的情况下包装被覆盖的方法吗?

问题描述

我有以下代码类:

Class Parent:
  def func(self):
    pass
    

Class ChildA(Parent):
  def func(self):
    <ChildA Func Implementation>

Class ChildA(Parent):
  def func(self):
    <ChildB Func Implementation>

有没有办法“包装”“func”的每个实现,使其行为如下:

def func(self):
   with send_metrics:
      <ChildA Func Implementation>

不更改任何子类代码?

我已经研究过为父类创建一个描述符,但为了让它工作,我需要更改每个子类以也使用这个描述符。我试图避免它,因为可能有大量的子类。- 我看到在 Python 3.7 中可以做类似的事情,但我正在使用 2.7

我会注意到我不能改变实际的接口,意思是——第 3 方调度程序调用“func”,我不能让它调用不同的方法。

提前致谢!

标签: pythonpython-2.7inheritancedescriptor

解决方案


推荐阅读