我需要将一个外部类扩展到我的(它是来自PyPI的一个包的类)。
这个类有一个定义其中函数的方法:
class MyClass(object):
def mymethod(self, *args, **kwargs):
def aux_function(self, params):
# Do something
# Do something and call aux_function
我想覆盖实例方法中的aux_function,但我想将其余的代码保留在方法中。
有没有办法覆盖方法中的函数并使用super()来运行原始类中的代码?
答案 0 :(得分:2)
没有办法做到这一点,没有。 aux_function()
是mymethod()
内的局部变量,仅此而已,您无法在子类中覆盖它。您必须在子类中重新定义整个方法。
您可以修补该功能,请参阅Can you patch *just* a nested function with closure, or must the whole outer function be repeated?,但这并不完全相同。