哪个是首选?我相信他们的结果完全相同。
self.inheritedMethodName(arguments)
或者:
ParentClass.inheritedMethodName(self, arguments)
我知道还有:
super().inheritedMethodName(arguments)
但我的理解是,这是不鼓励的。
答案 0 :(得分:2)
第一个绝对是首选。这是Python的基本功能instance.method(...)
被翻译为Class.method(instance, ...)
。很少需要明确地使用第二种形式,它只会让阅读代码的人感到困惑,因为他们会想知道你为什么这么做。
更一般地说,为什么要根据是否覆盖它来调用方法?通常,您只需在对象上调用该方法,并让对象(包括其类层次结构)决定应该调用哪个实现。您通常只使用方法中的第三种形式(带super
)来显式调用同一方法的超类版本。