Feature request: subclassing FunctionType [Was: Some language proposals]
Michael Hudson
mwh at python.net
Fri Feb 27 08:24:37 EST 2004
michele.simionato at poste.it (Michele Simionato) writes:
[...]
> There is some merit on all those points of view. Speaking for myself,
> I would certainly use more closures if they were better supported by
> the language. The fact that closures are read-only don't bothers me too
> much, since I also think that when you want write access to a closure
> you are really trying to fake an object, and you are better off using
> a real object. On the other hand, I am really bothered by the scoping
> rules. My first post on this mailing list some time ago was caused by
> problems I had with the surprising scope rules. Take for instance
> this example:
>
> def make_adders(n):
> return [(lambda x: x+i) for i in range(n)]
>
> add0,add1=make_adders(2)
>
> print add0(0) #=> 1
> print add1(0) #=> 1
>
> This does not work as expected,
However, you would probably like this to work:
def make_mutual_rec():
def y1(x):
if x > 0: return y2(x/2)
else: return x
def y2(x):
if x > 0: return y2(x-2)
else: return x
return y1
make_mutual_rec()(3)
It seems to be difficult to reconcile the two points of view.
More reading:
http://www.python.org/~jeremy/weblog/040204.html
http://python.org/sf/872326
> and the solution is an ugly hack with default arguments:
Or an object...
[...]
> I don't like that, but I don't think that the current scope rules
> will change any soon. Alternatively, I can use a class:
Ah...
]...]
> I think this reads quite well. At the present, however, I cannot subclass
> FunctionType and I am a bit disturbed by that, also because I can subclass
> the other built-ins types and there no reason why functions must be so
> special: at they end they are just callable objects with a descriptor
> protocol. So, I submit it as a feature request for Python 2.4.
> Maybe, if enough people wants the feature, we may get it!
I suspect that creating the patch wouldn't take much longer than
writing that article.
Cheers,
mwh
--
In general, I'd recommend injecting LSD directly into your temples,
Syd-Barret-style, before mucking with Motif's resource framework.
The former has far lower odds of leading directly to terminal
insanity. -- Dan Martinez
More information about the Python-list
mailing list