
On Saturday 24 August 2002 05:15 pm, Jeremy Hylton wrote:
Good point, Oren. We now have two requirements for interfaces that are different than the standard inheritance mechanism. It should be possible to:
- inherit from a class without implementing that class's interfaces
- declare that a class implements an interface outside the class statement
It's harder to support the second requirement using the current inheritance mechanism.
The second requirement is a good part of what adaptation is meant to do. As I understand, that's exactly what Zope3 already provides for its interfaces. You don't just "declare" the fact -- you register an adapter that can provide whatever is needed to make it so. I.e., if object X does already implement interface Y without ANY need for tweaking/renaming/whatever, I guess the registered adapter can just return the object X it receives as an argument. More often, the adapter will return some (hopefully thin) wrapper over X that deals with renaming, signature-adaptation, and the like. That's how it works in Zope3 (at least as I understood from several discussions with Jim Fulton and Guido -- haven't studied Zope3 yet), and I think that such "external adaptation" functionality, however dressed up, should definitely be a part of whatever Python ends up with. Alex