PyProtocols: TypeError: Ambiguous adapter choice
luper rouch <[email protected]> Fri, 10 Jul 2009 18:44:26 +0200
| Newsgroups | gmane.comp.python.peak |
|---|---|
| Message-ID | <[email protected]> |
The following code produces an error:
TypeError: ('Ambiguous adapter choice', <class
'__main__.FooOneAsFoo'>, <class '__main__.FooTwoAsFoo'>, 2, 2)
--- code begins ---
from protocols import Interface, advise
class IFoo(Interface):
pass
class IFooOne(Interface):
pass
class IFooTwo(Interface):
pass
class FooOneAsFoo(object):
advise(
instancesProvide=[IFoo],
asAdapterForProtocols=[IFooOne]
)
class FooTwoAsFoo(object):
advise(
instancesProvide=[IFoo],
asAdapterForProtocols=[IFooTwo]
)
class ComposedFoo(object):
advise(
instancesProvide=[IFooOne, IFooTwo]
)
--- code ends ---
Why is it ambiguous to write for example:
foo = FooOneAsFoo(ComposedFoo())
foo has an IFoo interface, adapted from the IFooOne interface of ComposedFoo.