[Python-Dev] Capabilities

Ben Laurie ben@algroup.co.uk
Mon, 10 Mar 2003 15:30:13 +0000


Ka-Ping Yee wrote:
> Ben Laurie wrote:
> 
>>BTW, if you would like to explain why you don't think bound methods are
>>the way to go on python-dev, I'd love to hear it.
> 
> 
> Guido van Rossum wrote:
> 
>>Using capabilities, I would have to hand her
>>a bunch of capabilities for various methods: __getitem__, has_key,
>>get, keys, items, values, and many more.  Using proxies I can simply
>>give her a read-only proxy for the object.  So proxies are more
>>powerful.
> 
> 
> There seems to be a persistent confusion here that i would like
> to dispel: a capability is not a single lambda.
> 
> Guido's paragraph, above, seems to believe that it is.  In fact,
> the pattern he described is a common and powerful way of using
> capabilities.  A capability is just an unforgeable object reference.
> In a pure capability system, the only thing you can do with a
> capability is to call methods on it (or, if you prefer, all you
> can do is send messages to it).  Interposing an object to expose
> only a subset of another object's API, such as a read-only subset,
> is exactly the power capabilities give you.

I think this is an implementation detail, as I have mentioned before. A 
capability is a thing with certain properties, as discussed ad nauseam. 
You can implement them using bound methods or using opaque objects. 
Personally, I'd like to do both, but if I had to choose, I'd use bound 
methods.

Yes, this probably is a shift in position - I'm still trying to figure 
this stuff out, is my excuse!

Cheers,

Ben.

-- 
http://www.apache-ssl.org/ben.html       http://www.thebunker.net/

"There is no limit to what a man can do or how far he can go if he
doesn't mind who gets the credit." - Robert Woodruff