我想在我的代码中调用一个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
中添加'self'时,我收到错误
'TypeError:do_specific_stuff()获取0个位置参数,但是给出了1。任何接受者?提前谢谢......
答案 0 :(得分:4)
需要
def main_general_stuff(self):
self.do_general_stuff1()
self.do_specific_stuff()
...
问题是你缺少对self
的显式引用:Python认为你的意思是没有它的全局函数。请注意,Java中没有隐式this
:您需要指定它。