実行時の属性の動的な置換は、モンキー パッチと呼ばれます。
#なぜモンキー パッチと呼ばれるのか
#ランタイムの属性置換はサルとは何の関係もありません。その起源については 2 つの意見があります。オンラインで見つかったモンキー パッチの。 : 1. この単語はもともとゲリラ パッチ (雑多な軍隊、ゲリラ軍) でした。つまり、この部分がオリジナルではありません。英語では、ゲリラの発音はゴリア (オランウータン)、後に猿(サル)と表記されるようになりました。 2. もう一つの説明は、この方法は元のコードをめちゃくちゃにする(いじる)ため、英語ではMonkeying About(いたずら)と呼ばれるため、Monkey Patchと呼ばれるというものです。 モンキーパッチという名前は、「モジュールランタイム置き換えの機能」に相当するものなので、ちょっとわかりにくいです。モンキーパッチの使い方
1. 実行時に動的にモジュールを入れ替える方法
stackoverflowconsider a class that has a method get_data. This method does an external lookup (on a database or web API, for example), and various other methods in the class call it. However, in a unit test, you don't want to depend on the external data source - so you dynamically replace the get_data method with a stub that returns some fixed data.
from SomeOtherProduct.SomeModule import SomeClass def speak(self): return "ook ook eee eee eee!" SomeClass.speak = speak
import json import ujson def monkey_patch_json(): json.__name__ = 'ujson' json.dumps = ujson.dumps json.loads = ujson.loads monkey_patch_json()
2。実行時にモジュールを動的に追加する方法はたくさんあります。
このようなシナリオはたくさんあります。たとえば、チームの一般ライブラリ内のモジュールを参照し、モジュールの機能を充実させるには、継承だけでなくMonkey.Patchの利用も検討できます。 個人的には、Monkey Patch は利便性をもたらしますが、ソース コードの優雅さを台無しにする危険性もあると感じています。 PHP 中国語 Web サイトには、無料のPython ビデオ チュートリアル が多数あり、誰でも学習することができます。
から転載されました。
以上がPython のモンキーパッチとは何ですかの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。