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