我正在扩展由一组开发人员维护的项目。我的代码涉及从现有代码覆盖类中的方法。让我感到不舒服的一点是我不知道如何准确地覆盖超类方法。
以下是说明:
def foo(self):
return self.something
当我扩展它时,我通常应该尝试:
(1)
def foo(self):
old_something = super(Sub, self).foo()
# my code
return old_something
或者
(2)
def foo(self):
# my code
return super(Sub, self).foo()
我确定没有通用答案,但默认值是什么?例如,在 CL 中,如果您不指定此行为,则方法组合中的默认限定符为:around
,表示 case (2)。但是,例如,在 Java 中,约定是在覆盖它的方法的第一行调用 super,即 case (1)。Python的方法是什么?
编辑:
如果我做:
$ find . -type f -name "*.py" | xargs grep '= super' | wc -l
在我从事的项目中,我得到了更多的点击,然后如果我这样做:
$ find . -type f -name "*.py" | xargs grep 'return super' | wc -l
只是出于好奇。这是否适用于你们中的一些人/大多数人?:)