繁体   English   中英

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

[英]Python - inherit a method from a class but with a different name

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

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

最后,我研究了super的用法。 但是从我所读的内容来看,如果我仅从一个类继承该方法,那么super似乎可以解决当前问题。 如果我是继承什么SuperABCBatABC ,想要同时使用他们的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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM