On Sun, 14 Mar 2010 00:34:55 -0000, kuru <maymunbe...@gmail.com> wrote:
Hi
I have couple classes in the form of
class Vector:
def __init__(self,x,y,z):
self.x=x
self.y=y
self.z=z
This works fine for me. However I want to be able to provide a list,
tuple as well as individual arguments like below
myvec=Vector(1,2,3)
This works well
However I also want to be able to do
vect=[1,2,3]
myvec=Vec(vect)
You can do something like:
class Vector(object):
def __init__(self, x, y=None, z=None):
if isinstance(x, list):
self.x = x[0]
self.y = x[1]
self.z = x[2]
else:
self.x = x
self.y = y
self.z = z
but this gets messy quite quickly. The usual wisdom these days is to
write yourself a separate class method to create your object from a
different type:
class Vector(object):
... def __init__ as you did before ...
@classmethod
def from_list(cls, lst):
return cls(lst[0], lst[1], lst[2])
vect = [1,2,3]
myvec = Vector.from_list(vect)
--
Rhodri James *-* Wildebeeste Herder to the Masses
--
http://mail.python.org/mailman/listinfo/python-list