__init__ question

Gordon McMillan gmcm at hypernet.com
Fri Aug 6 16:36:17 EDT 1999


Mikael Aronsson writes:
> 
> I have a small Python class called Vector, it is a simple 3D vector
> class with an x,y and z variable.
> 
> I would like to have multiple constructors for this (like you can in
> C++).
> 
> Example:
> 
> a = Vector()  # x=0 y=0 z=0
> a = Vector( 1)  # x=1 y=1 z=1
> a = Vector( 1, 2, 3)  # x=1 y=2 z=3
> 
> Can this be done in Python, or can I only have one __init__ method 
> ?

Just one, but 
 
 def __init__(self, x=0, y=0, z=0):

should get you most of the way there. Before you go wild with default 
arguments, read the FAQ on the dangers associated with using a 
mutable variable as a default argument, (not a problem here, of 
course).




- Gordon




More information about the Python-list mailing list