2017-11-23 23 views
0

次の問題があります。 Person型の要素のリストがあります。彼らの中には、常に変化しているメンバーがいます。このような変更が発生すると、別のメソッドを呼び出す必要があります。誰も私の問題にどのようにメンバが変更された直後にメソッドを呼び出すいくつかのソリューションを提案できますか?リスト要素の一部が変更されたときにPython、関数を実行

class Person: 
    def __init__(self): 
     self.age = 20 

class Controller: 
    p1 = Person() 
    p2 = Person() 

    personList = [p1,p2] 

    def hb: 
     print("happy birthday") 

人の年齢が変更されたときにhbメソッドを呼び出すとします。次のコードは、この問題を示す単なる例です。

+0

コードを追加することはできますか?あなたが説明したことや期待することができる方法がたくさんあります。 – scharette

+0

したがって 'p2'または' p2'の属性 'age'が変更されたときに、' Controller'の 'hb'メソッドを呼び出そうとしますか? – Don

+0

はい、それは私が欲しいものです。 –

答えて

1

はゲッターとセッターデコレータを使用する:

class MyClass: 
    def __init__(self): 
     self.init = True 
     self.attribute = 1 
     self.init = False 

    @property 
    def attribute(self): 
     # Do something if you want 
     return self._attribute 

    @attribute.setter 
    def attribute(self, value): 
     if not self.init: 
      print('Value of "attribute" changed:', value) 
     self._attribute = value 

testobject = MyClass() 
testobject.attribute = 2 

Iが初期化フェーズにおいて呼び出される変更コードを防ぐために、追加の初期化変数を追加しました。

関連する問題