dynamic setattr

Mariano Di Felice mariano.difelice at gmail.com
Fri Jul 27 14:49:45 CEST 2012


Hi, 
  I have a property file (.ini) that has multiple sections and relative keys, as default structure.

Now, I would like to export from my utility class methods getter and setter.
I have started as is:

class Utility:

  keys = {"STANDUP": ["st_key1", "st_key2", "st_key3", "st_key4"],
              "DEFAULT": ["def_key1", "def_key2", "def_key3", "def_key4", "def_key5"]}


  def __init__(self):
            for section, keyList in  keys .items():
            for key in keyList:
                setattr(self, "get_%s" % key, self.get_value(section, key))
                setattr(self, "set_%s" % key, lambda value:self.set_value(section, key, value) )

  def get_value(section, key):
        if file_ini.has_option(section, key):
            return lambda: file_ini.get(section, key)
        return lambda: None

  def set_value(section, key, value):
        print "set section: %s - key: %s - value: %s" % (section, key, value)
        if file_ini.has_option(section, key):
            file_ini.set(section , key ,value)


if __name__ == "__main__":
  utility = Utility()
    print "key2: %s" % utility.get_def_key2() ## -> value return 100
    print "set value 50 to def_key2"
    utility.set_def_key2(50)
    print "new value def_key2: %s" % utility.get_def_key2()  ## -> value return 100


Well, when in code I set value 50 to def_key2, return value of key st_key4 of STANDUP section!!!! Why?
"set section STANDUP - key st_key4 - value: 200"

Can anyone help me, please???

Thx in Advance



More information about the Python-list mailing list