On Mar 3, 4:17 pm, Raymond Hettinger <[EMAIL PROTECTED]> wrote:
> Since Python doesn't support having two methods with the same name,
> the usual solution is to provide alternative constructors using
> classmethod():
>
>   @classmethod
>   def from_decimal(cls, d)
>         sign, digits, exp = d.as_tuple()
>         digits = int(''.join(map(str, digits)))
>         if sign:
>             digits = -digits
>         if exp >= 0:
>             return cls(digits * 10 ** exp)
>         return cls(digits, 10 ** -exp)


Note that even some of Python's built in types (dict *cough*)
implement homemade function overloading.

The OP wanted to write a constructor that could accept either a pair
of integers or a rational, there would be a good precedent for it.

However, I would advise the OP to use the constructor only for the
most common arguments, and use classmethods for more obscure, less
common arguments (such as decimal or even float).


Carl Banks
-- 
http://mail.python.org/mailman/listinfo/python-list

Reply via email to