こんにちは、Pythonエンジニア見習いです。 Pythonでデコレーターを継承先にも適用する のデコレーターを継承先にも適用する方法に欠陥を発見したのでそれがどのようなものなのか 解説していきたいと思います。さらにその代替方法についても紹介します。 なぜクラスの__new__関数を用いる方法ではダメなのか まず、Pythonのクラスに書かれた__new__関数はそのクラスのインスタンスが 生成されるたびに 実行されます 。これにより本来であれば各サブクラスごとに一回デコレーターを適用したい場面で デコレーターがインスタンス生成ごとに適用されてしまいます。わかりやすいように以下に例を示します。 まず、以下に示すようにpythonのクラスや関数が定義されているとします。 def deco(f): @functools.wraps(f) def inner(*args, **kwargs):
![Pythonでデコレーターを継承先にも適用する2 - タロスカイ株式会社](https://cdn-ak-scissors.b.st-hatena.com/image/square/d23a8b379ce39928a100117e1a7ccab5fa518e48/height=288;version=1;width=512/https%3A%2F%2Ftarosky.co.jp%2Fwp-content%2Fuploads%2Fsites%2F2%2F2017%2F04%2Fcharacter_computer_screen_hakase.png)