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