Задать вопрос
S1riyS
@S1riyS

Как заставить PyCharm заменять генерики на конкретные типы?

Пусть у меня есть абстрактный класс, который использует генерик:
from abc import ABC, abstractmethod
from typing import Generic, TypeVar

T = TypeVar("T")


class GenericAbstract(Generic[T], ABC):
    def __init__(self, a: T, b: T):
        self.a = a
        self.b = b

    @abstractmethod
    def action(self) -> T:
        pass


Теперь я наследуюсь от этого класса, указывая конкретный тип:
(при автоматическом создании __init__ вместо int также подставляется T)
class Implementation(GenericAbstract[int]):
    def __init__(self, a: int, b: int):
        super().__init__(a, b)


PyCharm подсказывает, что в классе Implementation не реализован метод action. Через контекстное меню я пытаюсь автоматически имплементировать его, но получаю
def action(self) -> T:
        pass

А хотелось бы
def action(self) -> int:
        pass

Можно ли как-то изменить поведение PyCharm'а? (mypy умеет отлавливать это, но было бы хорошо, если бы IDE сразу подставляла нужный тип)
  • Вопрос задан
  • 110 просмотров
Подписаться 1 Простой Комментировать
Помогут разобраться в теме Все курсы
  • Яндекс Практикум
    Инженер по тестированию: от новичка до автоматизатора
    9 месяцев
    Далее
  • Академия Eduson
    Автотестировщик на Python
    3 месяца
    Далее
  • Академия Eduson
    Python-разработчик
    9 месяцев
    Далее
Решения вопроса 1
AshBlade
@AshBlade
Просто хочу быть счастливым
Пока нет. В будущих релизах может исправят
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы