Методы класса подсказки типов Python с типом класса [дубликат]

avatar
Pablo
1 июля 2021 в 21:10
36
1
0

Я думал, есть ли способ использовать класс как тип для указания типа метода класса.

В этом примере выдается ошибка NameError, поскольку Monomial еще не определен:

class Monomial():
    def __init__(self, coef: int, grade: int) -> None:
        self.grade = grade
        self.coef = coef

    def product(self, other:Monomial) -> Monomial:
        return Monomial(self.coef*other.coef, self.grade+other.grade)

Ввод текста отлично работает снаружи:

def product(firs:Monomial, other:Monomial) -> Monomial:
    return Monomial(first.coef*other.coef, first.grade+other.grade)

Мне было интересно, есть ли ключевое слово, которое я могу использовать, чтобы намекнуть на тип или другое решение. Это было бы полезно, так как я использую mypy в качестве средства проверки типов.

Я знаю, что могу просто не указать тип, но я хотел бы найти решение, чтобы проверить тип. Заранее спасибо :)

Источник

Ответы (1)

avatar
Shaheed Haque
1 июля 2021 в 21:16
1

Вы должны заключать прямые ссылки на "Мономиал" в кавычки, например:

class MyClass:
    def doit(self) -> 'MyClass':
        pass

Подробнее см. https://www.python.org/dev/peps/pep-0484/#forward-references.