Hi,<br><br>u have the answer in ur question itself :) u dont need to redefine list methods again - just inherit from the builtin-list-type.<br><br>try this with new style classes:<br><br>#### code ###<br>class Point(list):
<br> def __init__(self,x,y):<br> super(Point, self).__init__()<br> self.x
= x<br> self.y = y<br> <br> <br>p = Point(2,3)<br>print dir(p)<br>print type(p)<br>#### code ####<br><br>regards<br>KM<br>----------------------------------------------------------------------------------------------
<br><div><span class="gmail_quote">On 23 May 2007 09:58:36 -0700, <b class="gmail_sendername">Mangabasi</b> <<a href="mailto:mangabasi@gmail.com">mangabasi@gmail.com</a>> wrote:</span><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
Howdy,<br><br>I would like to create a Point class that lets me use Point instances<br>like the following example.<br><br>>>> p = Point(3, 4)<br>>>> p.x<br>3<br>>>> p.y<br>4<br>>>> p.z<br>
1<br>>>> p[0]<br>3<br>>>> p[1]<br>4<br>>>> p[1] = 5<br>>>> p.y<br>5<br>>>><br><br>other than the x, y, z attributes, these instances should behave like<br>regular Python lists. I have created something like :
<br><br>class Point:<br> def __init__(self, x, y, z = 1):<br> self.list = [x, y, z]<br><br> def __repr__(self):<br> return str(self.list)<br><br> def __str__(self):<br> return str(self.list)<br>
<br> def __getattr__(self, name):<br> if name == 'x':<br> return self.list[0]<br> elif name == 'y':<br> return self.list[1]<br> elif name == 'z':<br> return
self.list[2]<br> else:<br> return self.__dict__[name]<br><br> def __setattr__(self, name, value):<br> if name == 'x':<br> self.list[0] = value<br> elif name == 'y':
<br> self.list[1] = value<br> elif name == 'z':<br> self.list[2] = value<br> else:<br> self.__dict__[name] = value<br><br> def __getitem__(self, key):<br> return
self.list[key]<br><br> def __setitem__(self, key, value):<br> self.list[key] = value<br><br> def __getslice__(self, i, j):<br> return self.list[i : j]<br><br> def __setslice__(self, i, j, s):<br>
self.list[i : j] = s<br><br> def __contains__(self, obj):<br> if obj in self.list:<br> return True<br> else:<br> return False<br><br><br>There must be a way to inherit from the list type without having to
<br>redefine all the methods and attributes that regular lists have.<br><br>i.e.<br><br>class Point(list):<br> ...<br><br><br>Can someone provide an example?<br><br>Thanx in advance<br><br>--<br><a href="http://mail.python.org/mailman/listinfo/python-list">
http://mail.python.org/mailman/listinfo/python-list</a><br></blockquote></div><br>