-
-
Notifications
You must be signed in to change notification settings - Fork 3k
Description
Currently, mypy checks whether a class is abstract when it's instantiated. For classes with the @final decorator, it would make sense for there to be a typing error if they define any abstract methods or properties, since those could never be implemented.
It would also make sense for classes that explicitly have the ABCMeta metaclass and also have the @final decorator to be a typing error if the class contains any instance methods or properties, since there could never be an instance created to call them with.
Note that abstract final classes are an idiom that is sometimes used in Java to define a class that is just a grouping of static methods, but I believe that's mostly a result of Java not having modules and top-level functions. In Python, one could organize top-level functions and group them with a module. This could be an argument to disallow a class to have both @final and ABCMeta all-together.