Paulo da Silva wrote: > On 12-06-2015 17:17, Peter Otten wrote: >> Paulo da Silva wrote: >> > ... > >> >>>>> import types >>>>> class C(types.SimpleNamespace): >> ... pass >> ... >>>>> c = C(f1=1, f2=None) >>>>> c >> C(f1=1, f2=None) >> > > Thanks for all your explanations. > This solution works. Would you please detail a little on how it works? > Or just point me out some readings. > I am confused because types.SimpleNamespace seems to be a class!
It *is* a class, and by making C a subclass of SimpleNamespace C inherits the initialiser which does the actual work of updating the __dict__ of the C instance. > From docs ...: > class SimpleNamespace: > def __init__(self, **kwargs): > self.__dict__.update(kwargs) The actual implementation is written in C (the language used to implement the CPython interpreter), but following the example in the docs you can make your own SimpleNamespace... >>> class MySimpleNamespace: ... def __init__(self, **parms): self.__dict__.update(parms) ... >>> m = MySimpleNamespace(a=1, b=2) >>> m.a 1 >>> m.b 2 and when you subclass it the subclass inherits the behaviour: >>> class C(MySimpleNamespace): ... pass ... >>> c = C(x=10, y=20) >>> c.x 10 >>> c.y 20 -- https://mail.python.org/mailman/listinfo/python-list