[Tutor] Initialize Class Variables by Dictionary ...

Damon Timm damontimm at gmail.com
Sun Aug 30 00:30:15 CEST 2009


Hey!  I am a newbie too but it works for me:

>>> class Test(object):
...   def __init__(self,dict):
...     for key in dict:
...       self.__setattr__(key,dict[key])
...
>>> t = Test()
>>> t.test1
'hi there'
>>> t.test2
'not so much'
>>> t.test3
'etc'

Thanks!


On Sat, Aug 29, 2009 at 4:59 PM, Mac Ryan<quasipedia at gmail.com> wrote:
> On Sat, 2009-08-29 at 16:31 -0400, Damon Timm wrote:
>> Hi again - thanks for your help with my question early today (and last
>> night).  Tried searching google for this next question but can't get
>> an answer ... here is what I would like to do (but it is not working)
>> ...
>>
>> >>>dict = {'test1': 'value1', 'test2': 'value2', 'test3': 'value3'}
>> >>> class Test():
>> ...   def __init__(self):
>> ...     for key in dict:
>> ...       self.key = dict[key]
>> ...
>> >>> t = Test()
>> >>> t.test1
>> Traceback (most recent call last):
>>   File "<console>", line 1, in <module>
>> AttributeError: Test instance has no attribute 'test1'
>> >>> t.key
>> 'value3'
>>
>> Can I do what I am dreaming of ?
>
> Yes you can, but not that way. Here is how I did on my console:
>
>>>> class A(object):
> ...   pass
> ...
>>>> dir(A)
> ['__class__', '__delattr__', '__dict__', '__doc__', '__format__',
> '__getattribute__', '__hash__', '__init__', '__module__', '__new__',
> '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__sizeof__',
> '__str__', '__subclasshook__', '__weakref__']
>>>> setattr(A, 'test1', 'mytest')
>>>> dir(A)
> ['__class__', '__delattr__', '__dict__', '__doc__', '__format__',
> '__getattribute__', '__hash__', '__init__', '__module__', '__new__',
> '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__sizeof__',
> '__str__', '__subclasshook__', '__weakref__', 'test1']
>>>> A.test1
> 'mytest'
>
> So, the key here is to use the setattr() builtin function.
>
> However keep in mind that I am a python beginner, so you would probably
> like to hear from some real tutors before implementing this solution all
> over your code...
>
> Mac.
>
>
>


More information about the Tutor mailing list