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

Python 我如何从一个超类调用一个方法,谁的定义完全被推迟到子类?,python,Python,我想在超类中的代码中创建一个方法,以便在继续之前进行一些特定于子类的处理。我最近从C#来到python。。。在那里,我可能会使用一个接口。这里是它的要点(正如我想象的,但它不起作用): 我有一个相当复杂的实现这一点;这个例子正是我所需要的,对于第一次观看的人来说,理解它的痛苦要小得多。此时调用do\u specific\u stuff()会出现错误 未定义“全局名称”“特定于您的内容” 当我在self.do\u specific\u stuff中添加“self”时,我会得到错误 'TypeErr

我想在超类中的代码中创建一个方法,以便在继续之前进行一些特定于子类的处理。我最近从C#来到python。。。在那里,我可能会使用一个接口。这里是它的要点(正如我想象的,但它不起作用):

我有一个相当复杂的实现这一点;这个例子正是我所需要的,对于第一次观看的人来说,理解它的痛苦要小得多。此时调用
do\u specific\u stuff()
会出现错误

未定义“全局名称”“特定于您的内容”

当我在
self.do\u specific\u stuff
中添加“self”时,我会得到错误

'TypeError:do_specific_stuff()接受0个位置参数,但给出了1个。'有接受者吗?提前感谢…

需要

def main_general_stuff(self):
    self.do_general_stuff1()
    self.do_specific_stuff()
    ...
问题是您缺少对
self
的显式引用:Python认为您指的是没有它的全局函数。请注意,Java中没有类似于此的隐式
:您需要指定它。

它需要

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

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

作为旁注:您根本不需要在基类中有
do\u-specific\u-stuff
方法。Python或类似的东西中没有“虚拟和非虚拟方法”;每个方法都是先在子类上查找的。顺便说一下:基类中根本不需要有
do\u-specific\u-stuff
方法。Python或类似的东西中没有“虚拟和非虚拟方法”;每个方法都首先在子类上查找。谢谢。这是有道理的,但我只是更新了我的帖子,以适应新的错误。传递的参数错误。关于更新中的
TypeError
:在具有不同(零参数)签名的子类中,您是否有
Do_specific_stuff
的实现?@statsviacsh您可能忘了将其定义为
def Do_specific_stuff(self):
检查
self
参数是否存在于您的子类Vikki中,您就搞定了。如果可以的话,我会接受的。生手的错误。谢谢。这是有道理的,但我只是更新了我的帖子,以适应新的错误。传递的参数错误。关于更新中的
TypeError
:在具有不同(零参数)签名的子类中,您是否有
Do_specific_stuff
的实现?@statsviacsh您可能忘了将其定义为
def Do_specific_stuff(self):
检查
self
参数是否存在于您的子类Vikki中,您就搞定了。如果可以的话,我会接受的。生手的错误。谢谢。