[EMAIL PROTECTED] wrote: > On Sep 6, 10:26 am, rh0dium <[EMAIL PROTECTED]> wrote: >> Hi all, >> >> I have the following piece of code and I wanted to set the default >> attributes based on a dictionary. What I am looking for is a way to >> take PIPODEFAULTS and assign each one as an attribute for the class >> pipo. Can someone show me how to do this by iterating over the >> PIPODEFAULTS and assign them. What I would expect to be able to do is >> call the class and modify them. >> >> example: >> a = pipo() >> print a.caseSensitivity >> "preserve" >> >> a.caseSensitivity = "lower" >> print a.caseSensitivity >> "lower" >> > > > I infer from your example that you want > to set default attributes for *instances of* class pipo > (not for class pipo itself). > > Use setattr: > > class pipo(object): > PIPODEFAULTS = {'caseSensitivity':'preserve', > 'cellMapTable':'checkPolygon', # etc > } > def __init__(self, *args, **kwargs): > for attr, value in pipo.PIPODEFAULTS.iteritems(): > setattr(self, attr, value) > > a = pipo() > b = pipo() > print a.caseSensitivity > a.caseSensitivity = 'lower' > print a.caseSensitivity > print b.caseSensitivity > > -- > Hope this helps, > Steven > > This is actually way over-complicated. Remembering that the MRO will look in the class to resolve the name of an attribute it doesn't find in the instance you can simply use the class as a repository for the defaults:
>>> class pipo(object): ... caseSensitivity = 'preserve' ... cellMapTable = 'checkPolygon' ... # ... ... >>> p1 = pipo() >>> p2 = pipo() >>> p1.caseSensitivity 'preserve' >>> p2.caseSensitivity = "lower" >>> p1.caseSensitivity 'preserve' >>> p2.caseSensitivity 'lower' >>> You could extend the class to allow per-instance defaults to be set in the __init__() method too (untested): class pipo(object): caseSensitivity = "preserve" cellMapTable = 'checkPolygon' def __init__(self, ..., **kw): self.__dict__.update(kw) p1 = pipo(caseSensitivity='lower') regards Steve -- Steve Holden +1 571 484 6266 +1 800 494 3119 Holden Web LLC/Ltd http://www.holdenweb.com Skype: holdenweb http://del.icio.us/steve.holden --------------- Asciimercial ------------------ Get on the web: Blog, lens and tag the Internet Many services currently offer free registration ----------- Thank You for Reading ------------- -- http://mail.python.org/mailman/listinfo/python-list