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