0

我想在我的代码中的 supercass 中调用一个方法,在继续之前进行一些特定于子类的处理。我最近从 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我得到了错误

'TypeError: do_specific_stuff() 采用 0 个位置参数,但给出了 1 个。' 有接盘侠吗?提前致谢...

4

1 回答 1

4

它需要是

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

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

于 2013-08-21T00:51:50.900 回答