0

私はこれを持っています(Py2.7.2):

class MyClass(object):
    def __init__(self, dict_values):
        self.values = dict_values
        self.changed_values = {} #this should track changes done to the values{}
        ....

次のように使用できます。

var = MyClass()
var.values['age'] = 21
var.changed_values['age'] = 21

しかし、私はそれを次のように使いたいです:

var.age = 21
print var.changed_values #prints {'age':21}

プロパティを使用してそれを行うことができると思いますが、どうすればよいですか?

アップデート:

設計時のdictの内容はわかりません。実行時にのみ認識されます。そして、それは空ではない可能性があります

4

3 に答える 3

0

property()組み込み関数を使用できます。

here で説明されているように、これは__getattr__andをオーバーライドするよりも優先されます。__setattr__

  class MyClass:  

      def __init__(self):
          self.values = {}
          self.changed_values = {}

      def set_age( nr ):
           self.values['age'] = nr
           self.changed_values['age'] = nr

      def get_age():
           return self.values['age']

      age = property(get_age,set_age)
于 2012-09-25T15:15:55.247 に答える