Function
zope.app.interface.queryType

Signature

queryType(object, interface)

Documentation String

Returns the object's interface which implements interface.

>>> from zope.app.content.interfaces import IContentType
>>> from zope.interface import Interface, implements, directlyProvides
>>> class I(Interface):
...     pass
>>> class J(Interface):
...     pass
>>> directlyProvides(I, IContentType)
>>> class C(object):
...     implements(I)
>>> class D(object):
...     implements(J,I)
>>> obj = C()
>>> c1_ctype = queryType(obj, IContentType)
>>> c1_ctype.__name__
'I'
>>> class I1(I):
...     pass
>>> class I2(I1):
...     pass
>>> class I3(Interface):
...     pass
>>> class C1(object):
...     implements(I1)
>>> obj1 = C1()
>>> c1_ctype = queryType(obj1, IContentType)
>>> c1_ctype.__name__
'I'
>>> class C2(object):
...     implements(I2)
>>> obj2 = C2()
>>> c2_ctype = queryType(obj2, IContentType)
>>> c2_ctype.__name__
'I'
>>> class C3(object):
...     implements(I3)
>>> obj3 = C3()

If Interface doesn't provide IContentType, queryType returns None.

>>> c3_ctype = queryType(obj3, IContentType)
>>> c3_ctype
>>> c3_ctype is None
True
>>> class I4(I):
...     pass
>>> directlyProvides(I4, IContentType)
>>> class C4(object):
...     implements(I4)
>>> obj4 = C4()
>>> c4_ctype = queryType(obj4, IContentType)
>>> c4_ctype.__name__
'I4'