[英]Python - inherit a method from a class but with a different name
我必须定义一个从另一个类(称为SuperABC
)继承的类(称为ABC
)。 我从( SuperABC
)继承的类有一个我需要使用的方法(称其为func
)。 但是问题在于,我必须在类ABC
定义一个具有相同名称的方法(即func
),该方法将调用SuperABC
类的func
方法并执行其他操作。 我意识到,如果我可以继承SuperABC
的func
方法但使用其他别名,则可以解决此问题。 有可能这样做吗?
目前,我刚刚从SuperABC
类复制了func
方法,将其添加到ABC
类中,并将其名称更改为_func
。 还有其他方法吗?
最后,我研究了super
的用法。 但是从我所读的内容来看,如果我仅从一个类继承该方法,那么super
似乎可以解决当前问题。 如果我是继承什么SuperABC
和BatABC
,想要同时使用他们的func
的方法func
的方法ABC
通过更改名称或任何其他方法的类? 有可能这样做吗?
您可能的意思是这样的:
class ABC(SuperABC):
def _func(*args, **kwargs):
return SuperABC.func(*args, **kwargs)
如果要摆脱原始func
的实际继承,请添加:
def func(*args, **kwargs):
return
执行第二步的另一种方法是在__init__
阶段更改func
,但是如果未仔细完成操作,则可能会覆盖其中的其他内容。
如果要从2个不同的类继承2个func
(并且func
在两个类中的名称相同),则必须定义一个中间类,该中间类首先更改其中一个的名称。
刚转接电话。
def _func(*args, **kwargs):
return func(*args, **kwargs)
如果您需要通过以下特定方式进行操作:
subclass_function_name = super().parentfunctionname
如果您使用的是Python 2,则需要在super()中添加args。 请注意,这不是对parentfunctionname的调用,而是对函数对象的引用。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.