我如何从一个超类调用一个方法,谁的定义完全推迟到子类?

2024-06-28 11:18:14 发布

您现在位置:Python中文网/ 问答频道 /正文

我想在超类的代码中envoke一个方法,在继续之前做一些特定于子类的处理。我最近从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\u specific\u stuff”。你知道吗

当我在self.do_specific_stuff中添加“self”时,我得到了一个错误

'TypeError:do\u specific\u stuff()接受0个位置参数,但给出了1个。'有接受者吗?提前谢谢。。。你知道吗


Tags: the方法代码selfdef错误子类do
1条回答
网友
1楼 · 发布于 2024-06-28 11:18:14

必须是这样

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

问题是缺少对self的显式引用:Python认为您指的是没有它的全局函数。注意,Java中没有类似的隐式this:您需要指定它。你知道吗

相关问题 更多 >