2009-06-08 8 views
6

追加のプロパティを追加するPythonクラスがあるとします。Pythonでクラスをパッチする

import path.MyClass 
setattr(MyClass, 'foo', bar) 

import path.MyClass 
MyClass.foo = bar 

と同じようなものを使用しての間に違いはありますか?

もしそうでなければ、なぜ人々は最初のものよりも2番目のことをしているように見えますか? (例:ここではhttp://concisionandconcinnity.blogspot.com/2008/10/chaining-monkey-patches-in-python.html

+1

クラスの定義を追加の方法で更新しないのはなぜですか?クラス定義を編集するだけで、なぜこの "魔法のような"ものができますか? –

+0

私がこれを尋ねたときの私の特に問題は、クラスは私たちが変更したくない図書館から来たものです。それをサブクラス化できませんでした。しかし一般的に同意する。 – interstar

答えて

11

文は等価ですが、それは2の最もダイナミックな選択だからSETATTRが使用される可能性があります

を参照してください(あなたが属性名に変数を使用することができSETATTRと。):http://docs.python.org/library/functions.html#setattr

+0

合意。特に、OPの参照されたブログエントリでパッチを適用する方法が必要になります。このメソッドの名前は、monkeypatchメソッドの内部ではわかりませんでした。ありがとう。 –

+0

しかし、私はまだ他のものよりもダイナミックであるとは思わないので、質問を更新しました – interstar

+0

ああ...いいえ、私はあなたの意味を参照してください...ごめんなさい! – interstar

関連する問題