Let\'s say I have:
class A(object):
pass
class B(A):
pass
I want to declare a function that takes a subclass of A as an argument:
Guido answered this question here, but I believe PyCharm does not correctly support the appropriate syntax in Python 2. I believe the syntax should be (...) -> A
in PyCharm with Python 2. In Python 3, the appropriate syntax is Callable[..., A]
.
I note that PyCharm doesn't treat () -> A
as a class either; if you call a classmethod on A using this syntax, PyCharm inspection will flag that it can't find the referenced classmethod.
This has been filed in the JetBrains bugtracker, though was closed based on earlier comments. Given Guido's recent comments in the first reference, I'm hoping JetBrains will reopen.