Подкласс классов данных Python с подсказкой типа без переопределения значения по умолчанию ⇐ Python
Подкласс классов данных Python с подсказкой типа без переопределения значения по умолчанию
При использовании классов данных только по ключевым словам для определения полей базового класса, которые наследуются подклассами, как следует указывать тип полей в подклассах, чтобы обозначить, что поля имеют ограниченный набор допустимых значений без переназначения значения по умолчанию ?
Пример (для иллюстративных целей, а не из реальной жизни):
из классов данных импортировать класс данных из перечисления импортировать автоматически, StrEnum от ввода импортного литерала Направление класса (StrEnum): ВНИЗ = авто() ВЛЕВО = авто() ВВЕРХ = авто() ВПРАВО = авто() НЕИЗВЕСТНО = авто() @dataclass(kw_only=True) База классов: направление: Направление = Направление.НЕИЗВЕСТНО @dataclass(kw_only=True) класс Горизонтальный (База): направление: буквальное[Направление.ВЛЕВО, Направление.ВПРАВО, Направление.НЕИЗВЕСТНО] @dataclass(kw_only=True) класс Вертикальный (База): направление: Буквальное[Направление.ВНИЗ, Направление.ВВЕРХ, Направление.НЕИЗВЕСТНО] = Направление.НЕИЗВЕСТНО печать(Горизонтально()) печать (Вертикально ()) Я понимаю, что это всего лишь подсказка типа и не применяется во время выполнения.
Класс Horizontal может быть создан без ошибок (что удивительно — учитывая, что direction снова определено внутри этого подкласса без значения по умолчанию), но pylint сообщает следующее: «E1125: В вызове конструктора отсутствует обязательный аргумент ключевого слова «направление». Установка значения direction в Vertical отменяет точку по умолчанию в базовом классе.
При использовании классов данных только по ключевым словам для определения полей базового класса, которые наследуются подклассами, как следует указывать тип полей в подклассах, чтобы обозначить, что поля имеют ограниченный набор допустимых значений без переназначения значения по умолчанию ?
Пример (для иллюстративных целей, а не из реальной жизни):
из классов данных импортировать класс данных из перечисления импортировать автоматически, StrEnum от ввода импортного литерала Направление класса (StrEnum): ВНИЗ = авто() ВЛЕВО = авто() ВВЕРХ = авто() ВПРАВО = авто() НЕИЗВЕСТНО = авто() @dataclass(kw_only=True) База классов: направление: Направление = Направление.НЕИЗВЕСТНО @dataclass(kw_only=True) класс Горизонтальный (База): направление: буквальное[Направление.ВЛЕВО, Направление.ВПРАВО, Направление.НЕИЗВЕСТНО] @dataclass(kw_only=True) класс Вертикальный (База): направление: Буквальное[Направление.ВНИЗ, Направление.ВВЕРХ, Направление.НЕИЗВЕСТНО] = Направление.НЕИЗВЕСТНО печать(Горизонтально()) печать (Вертикально ()) Я понимаю, что это всего лишь подсказка типа и не применяется во время выполнения.
Класс Horizontal может быть создан без ошибок (что удивительно — учитывая, что direction снова определено внутри этого подкласса без значения по умолчанию), но pylint сообщает следующее: «E1125: В вызове конструктора отсутствует обязательный аргумент ключевого слова «направление». Установка значения direction в Vertical отменяет точку по умолчанию в базовом классе.
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение
-
-
Как исправить ошибку PHP 8 с ложной подсказкой типа возвращаемого значения в методе?
Anonymous » » в форуме Php - 0 Ответы
- 5 Просмотры
-
Последнее сообщение Anonymous
-
-
-
Как заставить подкласс иметь определенный подкласс со свойством суперкласса?
Anonymous » » в форуме C# - 0 Ответы
- 51 Просмотры
-
Последнее сообщение Anonymous
-