<story><title>Interfaces and Protocols in Python</title><url>https://glyph.twistedmatrix.com/2021/03/interfaces-and-protocols.html</url></story><parent_chain></parent_chain><comment><author>motoboi</author><text>I’m not trying to start a flame war, but I’m genuinely curious: if you want and need all this, why not use Java?&lt;p&gt;Java has all the strong typing and static checking, all you need is to type a lot more words.</text></comment>
<story><title>Interfaces and Protocols in Python</title><url>https://glyph.twistedmatrix.com/2021/03/interfaces-and-protocols.html</url></story><parent_chain></parent_chain><comment><author>albertzeyer</author><text>It&amp;#x27;s the first time I hear about Zope, and also zope.interface. How widely is this used?&lt;p&gt;I personally would be hesitant to adopt something depending on some not-well-known library.&lt;p&gt;Then on the other side, if sth like interfaces are missing in core Python, and typing.Protocol is not quite the same thing, maybe we should try to extend the core typing for sth like typing.Interface?
Or maybe first to typing_extensions.&lt;p&gt;Or, as I understood it, maybe we just need to fix ABCMeta (for MyPy), and then already have what we want?&lt;p&gt;I&amp;#x27;m also not quite sure I understood: Why do I need this base class zope.interface.Interface at all? Why not just implement IPlugin or whatever like it is mentioned there, but not deriving from Interface, and throw NotImplementedError in methods (tools like PyCharm then recognize this is an abstract method). And all concrete types&amp;#x2F;classes just explicitly need to derive from this IPlugin class. That&amp;#x27;s mostly what I anyway do already, and what I also see in other projects code. This approach seems to be fine. What&amp;#x27;s the problem with it?</text></comment>