On 1/15/07, Ben Finney <[EMAIL PROTECTED]> wrote: > The alternate constructors are decorated as '@classmethod' since they > won't be called as instance methods, but rather: > > foo = Rational.from_string("355/113") > bar = Rational.from_int(17) > baz = Rational.from_rational(foo)
I agree with you that that method is the right approach. But you can also use module level functions, and sometimes that is even better: def from_string(str): (n, d) = parse_elements_of_string_input(str) return Rational(n, d) That way, you do not even have to expose the class at all to users of the module. I think it depends on how you want users to use your module. If you prefer: import rational rat = rational.from_string("123/456") Then module level functions is best. But if you prefer: from rational import Rational rat = Rational.from_string("123/456") class methods are better. -- mvh Björn -- http://mail.python.org/mailman/listinfo/python-list