On May 23, 1:43 pm, "Jerry Hill" <[EMAIL PROTECTED]> wrote: > On 23 May 2007 11:31:56 -0700, Mangabasi <[EMAIL PROTECTED]> wrote: > > > When I modified this to: > > > class Point(list): > > def __init__(self,x,y): > > super(Point, self).__init__([x, y]) > > self.x = x > > self.y = y > > > It worked. > > Are you sure? > > >>> p = Point(10, 20) > >>> p > [10, 20] > >>> p.x > 10 > >>> p.x = 15 > >>> p > [10, 20] > >>> p[0] > 10 > >>> p.x > 15 > > That doesn't look like what you were asking for in the original post. > I'm afraid I don't know anything about numpy arrays or what special > attributes an object may need to be put into a numpy array though. > > -- > Jerry
This is the winner: class Point(list): def __init__(self, x, y, z = 1): super(Point, self).__init__([x, y, z]) self.x = x self.y = y self.z = z def __getattr__(self, name): if name == 'x': return self[0] elif name == 'y': return self[1] elif name == 'z': return self[2] else: return self.__dict__[name] def __setattr__(self, name, value): if name == 'x': self[0] = value elif name == 'y': self[1] = value elif name == 'z': self[2] = value else: self.__dict__[name] = value -- http://mail.python.org/mailman/listinfo/python-list