在初始化子类#Python期间,根据给定的参数覆盖函数



这是python继承的一个最小示例:

class Parent(object):
def __init__(self, time):
self.time=time
def forward(self):
return 0

class Child(Parent):
def forward(self):
return 1

在初始化Child类时,我想覆盖基于self.timeforward函数。

即,如果是self.time==2,则使用Parent的正向函数而不是Child的。

class Child(Parent):
def __init__(self, time):
super(Child, self).__init__(time)
if self.time==2:
pass
#todo: use super().forward instead
def forward(self):
return 1

我可以在python(3.8+(中实现它吗?

可以在Python:中动态分配方法

class Child(Parent):
def __init__(self, time):
super(Child, self).__init__(time)
if self.time == 2:
self.forward = super(Child, self).forward
def forward(self):
return 1

或者您可以在Child.forward:中调用Parent.forward

class Child(Parent):
def forward(self):
return super(Child, self).forward() if self.time == 2 else 1

最新更新