Ivan Voras a écrit : > Laurent Pointal wrote: > >> The ugly part is the 'tmp' name, try to choose a name with a proper >> meaning about what it is really, and it become clean and readable: >> >> filerefs = some.big.structure.or.nested.object.with.file.references >> filerefs.encoding = "utf-8" >> filerefs.name = "MyFileName.txt" >> filerefs.use_quotes = True >> >> Isn't it ? > > Well, no, but this might be due to personal tastes. At least, I don't > think it's better then some other alternatives. For example, in C99 you > can do: > > static struct option_s foo_option = { > .name = "foo", > .type = O_STRING, > .def_value = "default" > }; > > At least to me, this looks even better than the Pascal's syntax.
If its at construction time, you can do the same with Python: class option_s(object) : def __init__(self,**initializers) : self.__dict__.update(initializers) foo_option = option_s( name = "foo", type_ = O_STRING, def_value = "default" ) And if the class has no such construction idiom, you can play like this: x = X() x.__dict__.update(dict( name = "foo", type_ = O_STRING, def_value = "default" )) Note: this directly manipulate objects attributes - some times its preffered to use ad-hoc methods. Note2: I prefer the "namespace.name = value" solution, more readable. Note3: Its funny to see how Python users tries to change the language, does this occure with C, C++, Java, C# ? -- http://mail.python.org/mailman/listinfo/python-list