> 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?
Similar to other answers already posted: #!/usr/bin/env python class azimuth: def __init__(self, bearing, heading): self.bearing = bearing self.heading = heading if not bearing: self.bearing = 30.5 # or, realistically, a calculation based on the heading if not heading: self.heading = "N..." # or, realistically, a calculation based on the bearing @staticmethod def getBearingInstance(bearing): return azimuth(bearing, None) @staticmethod def getHeadingInstance(heading): return azimuth(None, heading) azimuth1 = azimuth.getBearingInstance("N24d30mE") print azimuth1.heading azimuth2 = azimuth.getHeadingInstance(30) print azimuth2.bearing -- http://mail.python.org/mailman/listinfo/python-list