繁体   English   中英

我该如何从超类调用方法,而其定义完全取决于子类?

[英]How do I call a method from a superclass, whos definition is completely deferred to the subclasses?

我想在我的代码中加入一个超级方法,以便在继续之前进行一些特定于子类的处理。 我最近从C#来到python ...在那里,我可能会使用一个接口。 这是它的要点(正如我想象的那样,但是它不起作用):

class superClass:
    def do_specific_stuff(self): #To be implemented entirely by the subclass, 
        #but called from the superclass
        pass

    def do_general_stuff1(self):
        #do misc

    def do_general_stuff2(self):
        #do more misc

    def main_general_stuff(self):
        do_general_stuff1()
        do_specific_stuff()
        do_general_stuff2()

我对此有一个相当复杂的实现。 这个例子正是我所需要的,对于初学者来说,了解它的痛苦要小得多。 此刻调用do_specific_stuff()给我错误

未定义'全局名称'do_specific_stuff'。

当我在self.do_specific_stuff添加“ self”时,出现错误

“ TypeError:do_specific_stuff()接受0个位置参数,但给出了1个。” 有参加者吗? 提前致谢...

它必须是

def main_general_stuff(self):
    self.do_general_stuff1()
    self.do_specific_stuff()
    ...

问题是您缺少对self的明确引用:Python认为您的意思是没有它的全局函数。 需要注意的是,没有隐含this就像在Java中:你需要指定它。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

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