On Mon, May 24, 2010 at 9:34 PM, Six <john.d.perk...@gmail.com> wrote: > I am trying to access an objects sub-object attributes. I can boil the > code I am working with down to this problem section: > (snip) > class Pt: > x = None > y = None > def __init__(self, x, y): > self.x, self.y = x, y > pass > > class Pts: > curr_point = None > next_point = None
First of all, don't do this. Python doesn't have variable declarations, only assignments. So this creates a variable called curr_point for the *class*, not for the instance. What Java calls static variables. It doesn't matter here but... > def __init__(self, n, m): > self.next_point = Pt(n, m) > def update(self, point): > self.curr_point = self.next_point > self.next_point = point > > class PtManage: > points = {} Here you have a single mutable dict shared by all instances of PtManage. a = PtManage() b = PtManage() a.points["a"] = Pts(3,2) print b.points > def __init__(self): > pass > > point = Pts(3,5) > pman = PtManage() > pman.points["odds"] = point > print dir(pman) > > print pman["odds"].next_point.x PtManage doesn't define __getitem__, so pman["odds"] won't work. pman.points["odds"] should. > > (snip) > > It's this last line that doesn't work. What am I doing wrong? Is this > a failure of the design or am I missing something obvious? How do I > get down and see that "Pt" classes x attribute within the PtManage > dict? > -- > http://mail.python.org/mailman/listinfo/python-list > -- http://mail.python.org/mailman/listinfo/python-list