Re: (beginners question) howto set self.field4.subfield8='asdf'?
[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
Re: (beginners question) howto set self.field4.subfield8='asdf'?
Thx but is there any simpleir way, if using not class, but just struct (or something like that, MATLAB equivalent for that one)? 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) I have huge amount of such lines, and implementing separate class for each one is unreal. Thank you in advance, Dmitrey -- http://mail.python.org/mailman/listinfo/python-list
Re: (beginners question) howto set self.field4.subfield8='asdf'?
[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)? > 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) > I have huge amount of such lines, and implementing separate class for > each one is unreal. Get used to thinking of a class as a lightweight construct written with well-defined constraints rather than some know-it-all can-do-everything unwieldy monster. You can of course use one class throughout >>> class Struct: ... def __init__(self, **kw): ... self.__dict__.update(kw) ... >>> a = Struct(f=42) >>> b = Struct(x=1, y=2) >>> a.f 42 >>> b.x, b.y (1, 2) but separate classes don't require much more effort and make your code both more readable and more flexible. Peter -- http://mail.python.org/mailman/listinfo/python-list
Re: (beginners question) howto set self.field4.subfield8='asdf'?
Thx but is there any simpleir way, if using not class, but just struct (or something like that, MATLAB equivalent for that one)? 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) I have huge amount of such lines, and implementing separate class for each one is unreal. Thank you in advance, Dmitrey -- http://mail.python.org/mailman/listinfo/python-list
Re: (beginners question) howto set self.field4.subfield8='asdf'?
[EMAIL PROTECTED] wrote: > I have > class A: > def __init__(self, objFun, x0): > #(I want to have self.primal.f = objFun) > #both > self.primal.f = objFun > #and > self.primal = None > self.primal.f = objFun None is a singleton, so if Python were to allow the above f would always be the objFun of the last created A instance. > yields error > what should I do? Make a dedicated Primal class: >>> class Primal: ... pass ... >>> class A: ... def __init__(self, fun, x0): ... self.primal = Primal() ... self.primal.f = fun ... >>> def square(x): return x*x ... >>> a = A(square, 42) >>> a.primal.f Even better, because it makes no assumptions about the internal layout of Primal: class Primal: def __init__(self, f): self.f = f ... self.primal = Primal(fun) ... Peter -- http://mail.python.org/mailman/listinfo/python-list
(beginners question) howto set self.field4.subfield8='asdf'?
I have class A: def __init__(self, objFun, x0): #(I want to have self.primal.f = objFun) #both self.primal.f = objFun #and self.primal = None self.primal.f = objFun yields error what should I do? Thx -- http://mail.python.org/mailman/listinfo/python-list