2011-07-28 27 views
3

私は、コンストラクタの呼び出し後に設定される特定の属性を持つPythonオブジェクトを持っています。例えば、Python:setterが呼び出されたら関数を呼び出しますか?

def Student(object): 
    def __init__(name, address=None): 
     self.name = name 
     self.address = address 

stud = Student("John") 
stud.address = "123 Main St. New York, NY" 

は私がaddress属性がなど、アドレスを再フォーマットするか、検索を行うと郵便番号を追加として物事を行うであろう設定されている場合、関数が呼び出されていできるようにしたいと思いますオブジェクトの定義内でこれを達成する方法はありますか、またはaddress属性を設定するたびに自分で行う必要がありますか?

答えて

7

プロパティ概念です。

class C(object): 
    def __init__(self, x): 
    self._x = x 

    def get_x(self): 
    return self._x 
    def set_x(self, x): 
    self._x = x 
    x = property(get_x, set_x) 

obj = C(5) 
obj.x = 6 # set 
print obj.x # get 

詳細はこちらのリンクを参照してください:http://snippets.dzone.com/posts/show/954

3

あなたはproperty()を探しています。あなたはおそらく必要なもの

def Student(object): 
    def _get_address(self): 
    ... 

    def _set_address(self): 
    ... 

    address = property(_get_address, _set_address) 
関連する問題