Furthermore, it is clear that both aspects of interface are important, if not completely orthogonal and complementary. Clearly, detailing an exhaustive method of interface signatures is very difficult problem, especially for a dynamic language like Python where the interface signature for a class may change over time. However, a simple declarative mechanism to inquire which interface protocols an object supports at a given time is relatively straight forward and could bring immediate benefit. This method has a single argument, an interface protocol identifier, and either returns an object supporting the given protocol, or throws an unknown exception. And one or more optional NAME separated by a period.
NAME is a sequence of one or more alphabetic characters including the dash '-' character.
See the relevant ITEF specifications for specific details. Note that all of the protocols above have at least one period. Although this proposal may sounds similar to Microsoft's QueryInterface, it differs by a number of aspects. Third, implementations of Microsoft's QueryInterface must support a kind of equivalence relation. By reflexive they mean the querying an interface for itself must always succeed.