[EMAIL PROTECTED] wrote: > Thx > but is there any simpleir way, if using not class, but just struct (or > something like that, MATLAB equivalent for that one)?
Use this:: >>> A = type('', (), {}) >>> a = A() >>> a <__main__. object at 0x009E8490> >>> a.foo = 42 >>> a.foo 42 But perhaps using this (with a better name) would be more sensible (according to readability):: >>> class B: pass ... >>> b = B() >>> b.foo = 42 >>> b.foo 42 > I'm thinking of rewriting some optimization solvers (non-smooth, > constrained, with (sub)gradients or patterns provided by user) to > Python and I don't know currently is it possible to easy convert > things like > prob = []; > prob.advanced.ralg.hs = 1 (so in this line all subfields are > generating automatically in MATLAB or Octave) Perhaps something like this would be suitable:: >>> class Autocreating(object): ... def __getattr__(self, attr): ... if hasattr(self, attr) ... setattr(self, attr, Autocreating()) ... return getattr(self, attr) ... >>> a = Autocreating() >>> a.foo = 42 >>> a.foo 42 >>> a.hello.world = 23 >>> a.hello <__main__.Autocreating object at 0x...> >>> a.hello.world 23 But this is perhaps not a good way because it's way too implicite. > I have huge amount of such lines, and implementing separate class for > each one is unreal. You don't have to implement a separate class for *each one*. Use one class for every attribute, you can reuse it. But perhaps something like a dict is better for your purposes, anyways. HTH, Stargaming -- http://mail.python.org/mailman/listinfo/python-list