Python - 从类继承一个方法,但名称不同

时间:2017-08-01 11:23:42

标签: python oop inheritance

我必须定义一个继承自另一个类的类(称为ABC)(称之为SuperABC)。我继承自(SuperABC)的类有一个我需要使用的方法(让我们称之为func)。但问题是我必须在类func中定义一个具有相同名称的方法(即ABC),该方法调用func类的SuperABC方法并执行其他操作。我意识到如果我可以从func继承SuperABC方法但是使用不同的别名,我可以解决此问题。是否可以这样做?

目前我刚刚从func类复制了SuperABC方法,将其添加到ABC类并将其名称更改为_func。还有其他办法吗?

最后,我研究了super的用法。但是根据我的阅读,如果我只从一个类继承该方法,super看起来可以解决当前问题。如果我继承自SuperABCBatABC并希望通过更改名称在func类的func方法中使用他们的ABC方法,该怎么办?或任何其他方法?是否可以这样做?

3 个答案:

答案 0 :(得分:2)

你可能意味着这样的事情:

information_schema

如果你想摆脱原始class ABC(SuperABC): def _func(*args, **kwargs): return SuperABC.func(*args, **kwargs) 添加的实际继承:

func

执行第二步的另一种方法是在 def func(*args, **kwargs): return 阶段更改func,但如果不仔细完成,则可能会覆盖其中的其他内容。

如果要从2个不同的类继承2 __init__(并且func在两者中都是相同的名称),则必须先定义一个中间类,首先更改其中一个的名称

答案 1 :(得分:0)

转发电话。

 def _func(*args, **kwargs):
     return func(*args, **kwargs)

答案 2 :(得分:0)

如果您需要以这种方式执行此操作:

subclass_function_name = super().parentfunctionname

如果您使用的是Python 2,则需要在super()中添加args。请注意,这是对 NOT 的父函数名的调用,而是对函数对象的引用。