Inheriting from Python list object(type?)
km
srikrishnamohan at gmail.com
Wed May 23 13:37:00 EDT 2007
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 <mangabasi at gmail.com> 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
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.python.org/pipermail/python-list/attachments/20070523/39dd7795/attachment.html>
More information about the Python-list
mailing list