This is a reason why languages like Python are dynamically typed. Interfaces can be designed well in statically typed languages. A separate declaration asserts that a type conforms to an interface, by providing implementations of methods the interface requires. An object conforms to an interface if it has these methods with compatible types. A template can be instantiated on any type.
Interfaces are only roughly defined and are only described in human languages.
Given how Python looks today, it will not be accepted, because having to design all interfaces from the beginning is too constraining. The failure will be attributed to static typing. So an interface is defined by listing method names and requirements. It can be given a name, but a class doesn't need to list interface names in order to conform to them. Of course objects don't know their interfaces, similarly as they don't know names of variables they are bound to.