how to use more than 1 __init__ constructor in a class ?

F. Petitjean littlejohn.75 at news.free.fr
Wed Jun 22 15:08:25 EDT 2005


Le 22 Jun 2005 11:44:09 -0700, wittempj at hotmail.com a écrit :
> You also could use a list to represent your data, then you get more
> dimensions supported, e.g:
> import math
> class Point:
> 	def __init__(self, *args):
> 		self.points = list(args)
>
> def dist(x, y):
> 	if len(x.points) != len(y.points):
> 		raise RuntimeError('dimensions not the same')
> 	d = 0
> 	for i in range(len(x.points)):
> 		d += (x.points[i] - y.points[i])**2
> 	return math.sqrt(d)
>

My rewrite (same idea) :-)
class Point(object):
    def __init__(self, *args):
        self.coords = list(args)  # or even args ?

    def dist(self, other):
        d2 = sum([ (c1-c2)*(c1-c2) for c1, c2 in zip(self.coords,
            other.coords)])
        return math.sqrt(d2)





More information about the Python-list mailing list