在Python中覆盖实例方法中的函数

时间:2015-11-03 19:34:30

标签: python

我需要将一个外部类扩展到我的(它是来自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()来运行原始类中的代码?

1 个答案:

答案 0 :(得分:2)

没有办法做到这一点,没有。 aux_function()mymethod()内的局部变量,仅此而已,您无法在子类中覆盖它。您必须在子类中重新定义整个方法。

您可以修补该功能,请参阅Can you patch *just* a nested function with closure, or must the whole outer function be repeated?,但这并不完全相同。