In <mailman.459.1251313091.2854.python-l...@python.org> Ethan Furman 
<et...@stoneleaf.us> writes:

>Going back through the archives I found Arnaud's post with this decorator:

>def bindfunc(f):
>     def boundf(*args, **kwargs):
>         return f(boundf, *args, **kwargs)
>     return boundf

>If you use it on your fact function like so...

>class Demo(object):
>     @bindfunc
>     def fact(recurse, n)      # recurse can be any name you like
>         if n < 2:
>             return 1
>         else:
>             return n * recurse(n-1)
>     _classvar = fact(5)
>     del fact                  # no longer needed, and won't work
>                               # once class is created

>This should do as you want.

Thanks, this is instructive.

>As a side note, if you're going to bother asking questions on this list, 
>you really should try to understand the answers.

I think I understand the answers well enough.  What I *really*
don't understand is why this particular "feature" of Python (i.e.
that functions defined within a class statement are forbidden from
"seeing" other identifiers defined within the class statement) is
generally considered to be perfectly OK.  IMO it's a bizarre,
inexplicable blindspot (which, among other things, gives rise to
a certain worry about what other similar craziness lurks under
Python's image of rationality).  I have never seen even a half-hearted
justification, from a language design point of view, for why this
particular "feature" is worth having.  Maybe some day the BDFL will
deign to give one.

kynn
-- 
http://mail.python.org/mailman/listinfo/python-list

Reply via email to