0

getAdapter(obj、Interface)が適切に適合されたオブジェクトを返すのに、Interface(obj)がobjを返す原因は何でしょうか?

4

1 に答える 1

2

特定のインスタンスがすでにインターフェースを提供している場合はIInterface(instance)、渡されたインスタンスを返します。結局のところ、すでに要件を満たしています。メソッドinstanceを使用する必要がある場合は、直接使用できます。IInterface

>>> import zope.interface
>>> class IFoo(zope.interface.Interface):
...     pass
... 
>>> class Foo(object):
...     zope.interface.implements(IFoo)
...     pass
... 
>>> foo = Foo()
>>> IFoo(foo)
<__main__.Foo object at 0x10eed22d0>
>>> IFoo.providedBy(foo)
True

getAdapter()アダプタ レジストリに直接移動し、指定されたクラスのアダプタを登録した場合はIInterface、そのアダプタが返されます。元のオブジェクトがすでにインターフェースを提供していたので、これはやや無意味であり、適応は必要ありませんでした。

于 2012-12-17T17:12:11.443 に答える