
On Sat, Aug 24, 2002 at 11:15:56AM -0400, 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.
I want to go a step further. I don't want to declare that a class implements an interface outside the class statement. I don't want to declare *anything* about classes. My approach centers on the user of the class rather than the provider. The user can declare what he *expects* from the class and the inteface checking will verify that the class meets these requirements. In a way this is what you already do in Python - you use the object and if it doesn't meet your expectations it raises an exception. Exceptions are raised for both bad form and bad content. Bad content will still trigger an exception when you try to use it but bad form can be detected much earlier. See http://www.tothink.com/python/predicates I originally developed this for rulebases in security applications. I am now porting it to Python and cleaning it up. I think it should be an effective way to write assertions about the form of class objects based on methods, call signatures, etc. If/when type checking is added to Python it should also be possible to specify specific types for arguments and return values. Oren