Подкласс классов данных Python с подсказкой типа без переопределения значения по умолчаниюPython

Программы на Python
Ответить Пред. темаСлед. тема
Гость
 Подкласс классов данных Python с подсказкой типа без переопределения значения по умолчанию

Сообщение Гость »


При использовании классов данных только по ключевым словам для определения полей базового класса, которые наследуются подклассами, как следует указывать тип полей в подклассах, чтобы обозначить, что поля имеют ограниченный набор допустимых значений без переназначения значения по умолчанию ?

Пример (для иллюстративных целей, а не из реальной жизни):

из классов данных импортировать класс данных из перечисления импортировать автоматически, StrEnum от ввода импортного литерала Направление класса (StrEnum): ВНИЗ = авто() ВЛЕВО = авто() ВВЕРХ = авто() ВПРАВО = авто() НЕИЗВЕСТНО = авто() @dataclass(kw_only=True) База классов: направление: Направление = Направление.НЕИЗВЕСТНО @dataclass(kw_only=True) класс Горизонтальный (База): направление: буквальное[Направление.ВЛЕВО, Направление.ВПРАВО, Направление.НЕИЗВЕСТНО] @dataclass(kw_only=True) класс Вертикальный (База): направление: Буквальное[Направление.ВНИЗ, Направление.ВВЕРХ, Направление.НЕИЗВЕСТНО] = Направление.НЕИЗВЕСТНО печать(Горизонтально()) печать (Вертикально ()) Я понимаю, что это всего лишь подсказка типа и не применяется во время выполнения.

Класс Horizontal может быть создан без ошибок (что удивительно — учитывая, что direction снова определено внутри этого подкласса без значения по умолчанию), но pylint сообщает следующее: «E1125: В вызове конструктора отсутствует обязательный аргумент ключевого слова «направление». Установка значения direction в Vertical отменяет точку по умолчанию в базовом классе.
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Python»