Brett_McS wrote: > In C++ (gack!) I got used to creating a helper function with each class to > check the class object initialisation parameters prior to creating the > object. > > In Python, this would be > ----------------------------------------------- > import example > > if example.ParametersOK(a, b, c, d): > newObj = example.Example(a, b, c, d) > else: > print "Error in parameters" > ----------------------------------------------- > > I presume this would still be considered good practise in Python, or is > there some other, preferred, method?
Use exceptions to signal wrong parameters and move the parametersOk() test into the initializer class Example: def __init__(self, a, b, c, d): if a < 0: raise ValueError("Negative length not allowed") #... Write a factory if - creating the Example instance carries too much overhead and wrong parameters are likely, or - the checks are costly and you often get parameters known to be OK. def make_example(a, b, c, d): if a < 0: raise ValueError("Negative length not allowed") #... return Example(a, b, c, d) Example object creation then becomes try: newObj = example.Example(1,2,3,4) # or make_example(...) except ValueError, e: print e # you will get a specific message here If the checks still have to occur in multiple places in your code you are of course free to factor them out in a separate function. Peter -- http://mail.python.org/mailman/listinfo/python-list