モンキーパッチ(モンキーパッチ)は、動的置換のプロパティとメソッドの主な機能(本当にスーパー不貞)であります
Pythonは、オブジェクト指向プログラミングであるため、すべてのクラス、インスタンスオブジェクトので、パッケージは、オブジェクトとしてインポートすることができます。
単純なクラスの総理大臣の定義:
クラスA(): パス
()= Aの例
内部には、デフォルトの方法でまあ、このクラスのプロパティ
例の方法のない例もありません
まず、我々はオブジェクトメソッド、クラスの静的メソッド、クラスのプロパティを追加することができ、手、クラスAの足、クラスAすることができ、(クラスメソッドは、一時的に追加する方法を発見しませんでした)
外部からいくつかの簡単な関数を定義しました。
デフ(x、y)をc_func_add: リターンX + Y デフcs_func_multiply(自己、X、Y): リターンのx * yを用 デフs_func_show(): プリント( '私はFUNCを追加しています')
で[103]:A.c_f = c_func_add における[104]:A.cs_f = cs_func_multiply における[106] A = A() a.s_f = s_func_show:[107]に [108]で:A.c_f(1 、2) OUT [108]:3 で[109]:a.cs_f(2,3) OUT [109]:6 [110]で:a.s_f() 私は、FUNCを追加しています
全体のプロセスは、インスタンスオブジェクト、クラスの定義で実行され、様々な方法で添加することができる、実際には、この実験ではなかった、A.nameは=「ララ」またはa.name =「母」、属性を追加することも可能です。入力は、それぞれ、クラス属性に属する場合、インスタンス属性。
モンキープディングもう一つの利点は、あなたがそのようなモジュール1、モジュール2のように異なるインポートモジュールであるということです。
あなたはmodule1.into = moddule2.intoを通じて直接、メソッドに内側できるモジュール2使用する場合があります
メソッドのModule1た場合は、すでに裏表紙が定義されています。
今日はデータベースクエリとの相互作用を減少させるために、get_or_greate方法を使用ジャンゴ、により興味深いケーススタディを満たし、あなたは猿プディングの方法は、クエリが内部の最初のインスタンスのプロパティを結果キャッシュすることができます。
これは非常に、データベース内の相互作用の実際のプロセスを減らすことができます。
(自己、 '_profile')はhasattrない場合: self._profileを、_ = Profile.objects.get_or_create(ID = self.id) リターンself._profile
未来を忘れないように、マスターの先生は、看板を多くのことを学びました