Как намекнуть на функцию базового класса, которая возвращает экземпляр производного класса, из которого она вызывается? - PullRequest
0 голосов
/ 05 июня 2018

Я хочу намекнуть, что для B-экземпляра .duplicate_itself() возвращает B-экземпляр, а не A-экземпляр.

class A:
    def duplicate_itself(self) -> 'WHAT SHOULD I WRITE HERE?'
        return self.__class__()         

class B(A):
    pass

Кстати, я использую PyCharm, поэтому вы можете написать ответ, если вызнать какое-то конкретное решение PyCharm

1 Ответ

0 голосов
/ 05 июня 2018

Это можно сделать, прикрепив TypeVar к self:

T = typing.TypeVar('T')

class A:
    def duplicate_itself(self: T) -> T:
        return self.__class__()
...