Задать вопрос
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 сразу подставляла нужный тип)
  • Вопрос задан
  • 99 просмотров
Подписаться 1 Простой Комментировать
Решения вопроса 1
AshBlade
@AshBlade
Просто хочу быть счастливым
Пока нет. В будущих релизах может исправят
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

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