gpt4 book ai didi

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

转载 作者:太空狗 更新时间:2023-10-29 20:49:39 24 4
gpt4 key购买 nike

假设我们有以下类:

class Base(object):

def load(self):
# do logic A

# do logic B

class Child(Base):

def load(self):
# do logic C

我知道装饰器可用于扩展 Python 中的函数行为,但我不知道如何在我的案例中应用它。当 Child's 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

关于python - 在 Python 中扩展继承函数的行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28822472/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com