Init a table of functions
Richard Blackwood
richardblackwood at cloudthunder.com
Sat Oct 9 23:49:51 EDT 2004
Andrew Dalke wrote:
> Paulo da Silva wrote:
>
>> class foo:
>> def f1():
>> print "f1"
>> f1=staticmethod(f1)
>
> ...
>
>> K={"f1" : foo.f1, \
>> "f1" : foo.f2 \
>> }
>
>
> The name 'foo' doesn't exist as a global variable
> until after the class definition has been fully
> executed. To make what you want work do
>
>
> class foo:
> def f1():
> print "f1"
> f1=staticmethod(f1)
>
> def f2():
> print "f2"
> f2 = staticmethod(f2)
>
> K={"f1" : f1,
> "f2" : f2,
> }
>
> This works because the class definition creates
> its own scope, and 'f1' and 'f2' are valid variables
> in that scope.
>
> NOTE: I removed the unneeded "\" characters for
> stylistic reasons. If there's a "{" (or "(" or "[")
> then the interpreter doesn't assume that a newline
> means the end of the statement until after the
> closing character.
>
> The only time it's really needed is for the print
> statement. In almost every other case you should
> use some sort of parenthesis, brackets, etc. For
> example, instead of
>
> a = this_is_a_very_long_variable_name + \
> and_here_is_another_long_name
>
> you should use
>
>
> a = (this_is_a_very_long_variable_name +
> and_here_is_another_long_name)
>
> Andrew
> dalke at dalkescientific.com
Yo Andrew. That doesn't work. Check my previous post w/ errors.
More information about the Python-list
mailing list