Interfaces ========== An Interface contains the essential fields that will be implemented by multiple ObjectTypes. The basics: - Each Interface is a Python class that inherits from ``graphene.Interface``. - Each attribute of the Interface represents a GraphQL field. Quick example ------------- This example model defines a ``Character`` interface with a name. ``Human`` and ``Droid`` are two implementations of that interface. .. code:: python import graphene class Character(graphene.Interface): name = graphene.String() # Human is a Character implementation class Human(graphene.ObjectType): class Meta: interfaces = (Character, ) born_in = graphene.String() # Droid is a Character implementation class Droid(graphene.ObjectType): class Meta: interfaces = (Character, ) function = graphene.String() ``name`` is a field on the ``Character`` interface that will also exist on both the ``Human`` and ``Droid`` ObjectTypes (as those implement the ``Character`` interface). Each ObjectType may define additional fields. The above types have the following representation in a schema: .. code:: interface Character { name: String } type Droid implements Character { name: String function: String } type Human implements Character { name: String bornIn: String }