PEP0484 Type Hinting: Annotating argument of given class, not instance
<p>Let me explain with some sample, first.<br>
Suppose there is a web API client module (MyAPIClient), a mapper class that converts arbitrary response into Python object (ObjectMapper), and a class that represents response object (User and Message).</p>

<pre><code>class User(MyResponse):
    def __init__(self, status: int, id: int, name: str) -&gt; None:
        super().__init__(status)
        self.id = int
        self.name = name

class Message(MyResponse):
    def __init__(self, status: int, id: int, text: str) -&gt; None:
        super().__init__(status)
        self.id = int
        self.text = name

class ObjectMapper(object):
    def __init__(self, mapping_class: ???) -&gt; None:
        self.mapping_class = mapping_class

    def map(self, obj) -&gt; MyResponse:
        return self.mapping_class(**kwargs)

class MyAPIClient(object):
    def __init__(self, ...) -&gt; None:
        pass

    def get_current_user(...) -&gt; User:
        self.request("GET", "/current_user", ObjectMapper(User))

    def get_message(...) -&gt; Message:
        self.request("GET", "/message", ObjectMapper(Message))

    def request(method: str, endpoint: str, mapper: ObjectMapper):
        res = requests.request(...)
        return json.loads(response.content.decode(), object_hook=mapper.map)
</code></pre>

<p>As shown in the sample above, ObjectMapper receives an argument named "mapping_class." This is <strong>NOT</strong> an instance of the class, but a class itself as shown in <em>MyAPIClient#get_current_user</em> and <em>MyAPIClient#get_message</em>. My question is how I should annotate this mapping_class in the <strong>ObjectMapper#__init__</strong> which is currently marked as "???" in the sample above.</p>