在Python中扩展继承函数的行为

在Python中扩展继承函数的行为,python,function,inheritance,overriding,decorator,Python,Function,Inheritance,Overriding,Decorator,假设我们有以下几类: class Base(object): def load(self): # do logic A # do logic B class Child(Base): def load(self): # do logic C 我知道可以使用装饰器来扩展Python中的函数行为,但我不知道如何将其应用到我的案例中。 调用Child的load()时,如何按此顺序执行以下代码: logic A logic C

假设我们有以下几类:

class Base(object):

    def load(self):
        # do logic A

        # do logic B

class Child(Base):

    def load(self):
        # do logic C
我知道可以使用装饰器来扩展Python中的函数行为,但我不知道如何将其应用到我的案例中。 调用
Child的
load()
时,如何按此顺序执行以下代码:

logic A

logic C

logic B
我不想做什么

class Base(object)

    def logicA()
       pass

    def logicB()
       pass

    def load()
       pass

class Child(Base):

    def load(self):
        super.logicA()

        # do logic C

        super.logicB()

我只想对逻辑C进行编码,而不必显式地调用逻辑A和B

class Base(object):

    def load(self):
        print('do logic A')
        print('do logic B')


class Child(Base):

    def load(self):
        super().load()
        print('do logic C')


c = Child()
c.load()   
这将打印:

do logic A
do logic B
do logic C
我能想到的唯一其他方法是:

class Base(object):

    def load(self):
        print('do logic A')
        self.new_logic() # call new logic from child class, if exist.
        print('do logic B')

    def new_logic(self):
        # overwrite this one in child class 
        pass


class Child(Base):

    def new_logic(self):
        print('do logic C')


c = Child()
c.load()   
这张照片是:

do logic A
do logic C
do logic B

将逻辑A和B分成两个不同的函数?很接近,但我的目标是在B之前调用逻辑C,但问题是,我不想显式调用逻辑A或B…逻辑C基本上只是基本负载()的扩展“UNITHT97”你是说你希望子函数在基类函数的中间执行?也许通过一个函数来执行逻辑C到基类函数,并调用它在逻辑A和逻辑B?@ UNIT97中,我用其他的可能性修正了答案。