Inheriting from Python list object(type?)
Mangabasi
mangabasi at gmail.com
Wed May 23 12:58:36 EDT 2007
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
More information about the Python-list
mailing list