[英]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.