string formatting with mapping & '*'... is this a bug?
pfortin at pfortin.com
Fri Sep 10 17:40:48 CEST 2004
On Fri, 10 Sep 2004 16:34:31 +0200 Alex wrote:
> Pierre Fortin <pfortin at pfortin.com> wrote:
> > PS: Here's the latest incarnation of the test script... for me, the
> > "voodoo" part is
> > self.__dict__.update(locals())
> Ah, sorry, my favourite idiom to avoid the boilerplate of
> def __init__(self, fee, fie, foo, fum):
> self.fee = fee
> self.fie = fie
> self.foo = foo
> self.fum = fum
> Boilerplate is bad, and I'm keen on "Once, and ONLY once!" as a
> programming practice, so having to mention each of those names three
> times in totally repetitive ways makes me shiver. My favourite idiom
I fully agree with "once and ONLY once"... but you've pointed out that
"not-at-all is better than once"... :^)
> does, per se, leave a silly self.self around (which means a silly
> reference loop) so I should remember to 'del self.self' after it...
Since "self" is a convention (could use "this"), t'would be nice if Python
could avoid foo.foo ref. loops in a future release...
> > map = dict(Date=Date,
> > Open=float(Open),
> > High=float(High),
> > Low=float(Low),
> > Close=float(Close),
> > Volume=int(Volume),
> > AdjClose=float(AdjClose),
> > Change=change[int(float(AdjClose) >= float(Open)) +
> > int(float(AdjClose) == float(Open))]
> > )
> I could suggest some deboilerplatization here, too, but maybe that would
> be pushing things too far...
Hey! You're on a roll and I'm open for more abu... er education if this
isn't an imposition... :^)
> No, print itself has nothing to do with it; % is left associative, so
Of course.... lack of sleep triggered that faulty logic...
> Come to think of that, you SHOULD hoist the "real format" out of the
That's a given in my book... :>
> it IS a Python oddity that True+False
> equals 1;-).
That's OK with me... it was True+True equals *1* (OR v. +) that forced me
to wrap them with int()'s
More information about the Python-list