私は、開発者グループによって管理されているプロジェクトの拡張に取り組んでいます。私のコードには、既存のコードからのクラスのメソッドのオーバーライドが含まれます。私にとって不快な点の 1 つは、スーパークラス メソッドをオーバーライドする正確な方法がわからないことです。
以下に説明を示します。
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 では、この動作を指定しない場合、メソッドの組み合わせのデフォルトの修飾子は、 case (2):around
を意味するです。しかし、たとえば Java では、慣例として、 super をオーバーライドするメソッドの最初の行、つまり case (1)で super を呼び出します。それを行うPythonの方法は何ですか?
編集:
私が行った場合:
$ find . -type f -name "*.py" | xargs grep '= super' | wc -l
私が取り組んでいるプロジェクトでは、より多くのヒットが得られます。
$ find . -type f -name "*.py" | xargs grep 'return super' | wc -l
単なる好奇心から。これはあなたの何人か/あなたのほとんどに当てはまりますか? :)