我想在超类的代码中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个。'有接受者吗?提前谢谢。。。你知道吗
必须是这样
问题是缺少对
self
的显式引用:Python认为您指的是没有它的全局函数。注意,Java中没有类似的隐式this
:您需要指定它。你知道吗相关问题 更多 >
编程相关推荐