A java hobbyist programmer learning python
elhombre
elhmbre at ozemail.com.au
Sun Jan 18 02:16:04 EST 2009
"Paul Rubin" <http://phr.cx@NOSPAM.invalid> wrote in message
news:7xy6x9nzwd.fsf at ruckus.brouhaha.com...
> Chris Rebert <clp2 at rebertia.com> writes:
>> > class Calculator(): ...
>
>> Delete the 3 Java-ish accessor methods; good Python style just uses
>> the attributes directly (i.e. self.operator instead of
>> self.getOperator()).
>
> I think I would get rid of the whole Calculator class unless there was
> a good reason to keep it (i.e. you are going to have several
> Calculators active in the program simultaneously). Just write
> straightforward imperative code without bothering with the OO stuff
> that is mandatory in Java.
>
>> Rather than have a long if-elif-else chain like this, you can use a
>> dictionary with functions as values. For example:
>>
>> def add(x, y):
>> return x + y
>
> These functions are already defined in the operator module, and you
> can also define them inline with the lambda operator.
>
> Here is my version of the program:
>
> import sys
> from operator import add, mul, sub, div
>
> op, x, y = sys.argv[1:4]
>
> opdict = {'+': add, '*': mul, '-': sub, '/': div}
>
> try:
> func = opdict[op]
> except KeyError:
> print 'wrong argument supplied'
> sys.exit()
>
> print func(int(x), int(y))
>
> Note that like the original, it doesn't check for valid numeric args.
Good point about the class. I really only did that to begin to learn the
class syntax. I had not added any exception handling as I was taking it a
step at a time. Most of the first few hours were spent mucking around with
TextMate, Netbeans and Wing IDE. I finally got Netbeans working to the point
where something would run.
Thanks very much Paul.
More information about the Python-list
mailing list