mutually exclusive arguments to a constructor
Günther Dietrich
gd.usenet at spamfence.net
Fri Dec 30 16:00:58 EST 2011
Adam Funk <a24061 at ducksburg.com> wrote:
>Suppose I'm creating a class that represents a bearing or azimuth,
>created either from a string of traditional bearing notation
>("N24d30mE") or from a number indicating the angle in degrees as
>usually measured in trigonometry (65.5, measured counter-clockwise
>from the x-axis). The class will have methods to return the same
>bearing in various formats.
>
>In Java, I would write two constructors, one taking a single String
>argument and one taking a single Double argument. But in Python, a
>class can have only one __init__ method, although it can have a lot of
>optional arguments with default values. What's the correct way to
>deal with a situation like the one I've outlined above?
You can determine the type of the input data by using isinstance() and
take the appropriate actions depending on this decision:
>>> class MyClass(object):
... def __init__(self, input_data):
... if isinstance(input_data, basestring):
... print "Do actions for string type input"
... elif isinstance(input_data, float):
... print "Do actions for float type input"
... def get_output_data(self):
... return "output data"
...
>>> a = MyClass("String")
Do actions for string type input
>>> b = MyClass(15.9)
Do actions for float type input
Best regards,
Günther
More information about the Python-list
mailing list