python - 从子类中引用非重写父类(super class)方法的约定是什么?

标签 python python-3.x

以下哪一个是首选?我相信它们的结果是相同的。

self.inheritedMethodName(arguments)

或者:

ParentClass.inheritedMethodName(self, arguments)

我知道还有:

super().inheritedMethodName(arguments)

但我的理解是,这是不鼓励的。

最佳答案

第一个绝对是首选。 instance.method(...) 被翻译成 Class.method(instance, ...) 是 Python 的一个基本特性。很少需要显式使用第二种形式,它只会让阅读您代码的人感到困惑,因为他们会想知道您为什么这样做。

更一般地说,为什么您会根据是否重写方法来不同地调用该方法?一般来说,您只需调用对象上的方法,然后让对象(包括其类层次结构)决定应该调用哪个实现。您通常只会在方法中使用第三种形式(带有 super)来显式调用同一方法的父类(super class)版本。

关于python - 从子类中引用非重写父类(super class)方法的约定是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21214088/

相关文章:

python - 如何在Python中将一个csv文件中的状态代码映射到另一个csv文件中的状态名称?

python - 属性 setter 在 Python 类中不起作用

python - 尝试从正则表达式生成 pandas 数据框列时出现问题?

python - Django 脆皮表格 : Exception while resolving variable 'form_html' in template 'bootstrap3/whole_uni_form.html'

python - 有没有办法强制 Python 程序在 2.7 版中运行?

python - 从 Python 3 控制 Arduino 继电器

python-3.x - 在 NetworkX 中重现相同的图形

python - GUI 中的希腊字母 - PYTHON

python - 混合效应逻辑回归

python - 在多个文件中搜索多个正则表达式,然后输出每个匹配项及其各自的文件