[Types-sig] Interfaces API: a concrete contact point
Paul Prescod
paulp@ActiveState.com
Thu, 15 Mar 2001 22:02:50 -0800
Samuele Pedroni wrote:
>
> Hi.
>
> If we really aim for having just interfaces (still not convinced about
> that <wink>) IMHO a possible solution is to define their check this way:
>
> if the input to check against an interface IFace is an instance foo, we
> check if foo has an '__implements__'
> attribute in that case we test IFace.isImplementedBy(foo), otherwise we
> check if foo has all the required signatures :).
That's exactly what my code already implements:
# if the object CLAIMS to support an interface, we believe it
if _findInterface(val, iface):
return 1
# if the object LOOKS like it supports an interface, good 'nuff
else:
return iface.__check__(val)
findInterface recursively looks for this interface or any of its base
interfaces in the list of values
> Then eventually
> "class A implements IFace" should check at definition time if A has all
> the needed signatures,
> raising warnings for the missing signatures still allowing that way
> incremental coding.
Agreed.
--
Take a recipe. Leave a recipe.
Python Cookbook! http://www.activestate.com/pythoncookbook