Я использую декораторы классов в Python и не могу понять, какую аннотацию типа дать моему классу, чтобы сделать mypy счастливым.
Мой код следующий:
from typing import Type
from pprint import pformat
def betterrepr(cls:Type[object]):
"""Improve representation of a class"""
class improved_class(cls): # line 12
def __repr__(self) -> str:
return f"Instance of {cls.__name__}, vars = {pformat(vars(self))}"
return improved_class
В настоящее время у меня есть 2 следующие ошибки:
myprog.py:12: ошибка: неверный тип "cls"
myprog.py:12: ошибка: недопустимый базовый класс
Что я должен использовать для типа cls
(и, кстати, Pythonic использовать это ключевое слово для класса, используемого в качестве аргумента?)?
Спасибо
cls
вместо того, чтобы наследовать от него. - person MisterMiyagi   schedule 02.07.2019cls
— это каноническое имя для классов, например. в качестве первого аргументаclassmethod
. [...] 'cls' - предпочтительное написание для любой переменной или аргумента, который, как известно, является классом, особенно первый аргумент метода класса. из PEP8 - person MisterMiyagi   schedule 02.07.2019