point class help
r
rt8396 at gmail.com
Wed Jan 14 11:14:56 EST 2009
I am hacking up a point class but having problems with how to properly
overload some methods. in the __add__, __sub__, __iadd__, __isub__, I
want to have the option of passing an instance or a container(list,
tuple) like
>>> p1 = Point2d(10,10)
>>> p1 += (10,10)
>>> p1
Point2d(20,20)
>>>
>>> p2 = Point2d(10,10)
>>> p2 += p1
>>> p2
Point2d(30,30)
here is what i have, it would seem stupid to use a conditional in each
method like this...
def method(self, other):
if isinstance(other, Point2d):
x, y = origin.x, origin.y
else:
x, y = origin[0], origin[1]
#modify self.x & self.y with x&y
there must be a way to get the x, y with reusable code, i am not about
to have this conditional under every method call, What am i missing
here?
class Point2d():
def __init__(self, x, y=None):
if type(x) == tuple:
self.x = x[0]
self.y = x[1]
else:
self.x = x
self.y = y
def __str__(self):
return 'Point2d(%f, %f)' %(self.x, self.y)
def __add__(self, other):
if isinstance(other, Point2d):
x, y = origin.x, origin.y
else:
x, y = origin[0], origin[1]
return (self.x+x, self.y+y)
def __sub__(self, other):
pass
def __iadd__(self, other): #+=
pass
def __isub__(self, other): #-=
pass
any ideas?
More information about the Python-list
mailing list