Stef Mientki wrote: > I've a program where you can connect snippets of code (which I call a > "Brick") together to create a program. > To make it easier to create these code snippets, I need some > simplifications. > For simple parameters ( integer, tupple, list etc) this works ok, > and is done like this: > > > class _Simple_Par ( object ) : > """ > Class to make it more easy to set a Bricks.Par from a control. > So instead of : > self.Brick.Par [ self.EP[0] ] = Some_Value > you can write > self.P[0] = Some_Value > """ > def __init__ ( self, control ) : > self.Control = control > def __setitem__ ( self, index, value ) : > i = self.Control.EP [ index ] > if i : > self.Control.Brick.Par [ i ] = value > > Now I want a similar simplification for the case that Par is a dictionary: > So instead of writing: > self.Brick.Par [ self.EP[0] ] [ 'Filename' ] = Some_Value > > I would like to write: > self.P[0] [ 'Filename' ] = Some_Value > > But I can't figure out how to accomplish that ? > > Any suggestions ?
Are you about to confuse your cat, too? Here's the modified example: class Brick(object): def __init__(self): self.Par = [dict(a=1), dict(b=2), dict(c=3)] class P(object): def __init__(self, parent): self.parent = parent def __getitem__(self, index): p = self.parent return p.Brick.Par[p.EP[index]] class A(object): def __init__(self): self.Brick = Brick() self.EP = [2,1,0] self.P = P(self) def demo(self): print "before:", self.Brick.Par self.P[0]["yadda"] = "whatever" print "after:", self.Brick.Par a = A() a.demo() Peter -- http://mail.python.org/mailman/listinfo/python-list