こんにちは、Pythonエンジニア見習いです。最近TemplateMethodパターンを使っているコードのリファクタリングをしていたところ、継承先にもデコレーターを適用したい場面に遭遇しました。その時、単純に継承元に適用するだけではうまくいかず、工夫が必要でした。今回はPythonでデコレーターを継承先にも適用する方法を皆様に紹介したいと思います。 なぜ単純に継承元に適応するだけではダメなのか 継承元の関数は継承先の関数はたとえ名前が同じであってもそれが指す関数オブジェクトは別物です。よって継承元でデコレーターを適用した場合、継承先ではそのデコレーターの適用された継承元の関数は継承先の同名の関数で上書きされます。最終的に継承先の関数ではデコレーターの適用されていない関数が残ります。 どうやったら継承先にデコレーターを適用できるのか メンバ関数がデコレートされるタイミングはクラス(インスタン
![Pythonでデコレーターを継承先にも適用する - タロスカイ株式会社](https://cdn-ak-scissors.b.st-hatena.com/image/square/a0829ef495c94d818bed4935bb2d9d10d6047529/height=288;version=1;width=512/https%3A%2F%2Ftarosky.co.jp%2Fwp-content%2Fuploads%2Fsites%2F2%2F2016%2F11%2Fhito_jinrui_shinka.png)