Лучший способ создания Enum с иерархиейPython

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

Сообщение Anonymous »

Я хочу создать перечисления с иерархией, чтобы упростить проверку аргументов, проверку типов и т. д. Например, предположим, что я хочу перечислить различные типы сотрудников в компании, распределенных по отделам:

Код: Выделить всё

class ProductEmployee(Enum):
PM = 1
ANALYST = 2
MANAGER = 3

class EngEmployee(Enum):
DATA_ENG = 1
FRONTEND_DEV = 2
BACKEND_DEV = 3
Что я пробовал: создать новый Enum, включающий оба:

Код: Выделить всё

class Employee(Enum):
PM = ProductEmployee.PM
ANALYST = ProductEmployee.ANALYST
MANAGER = ProductEmployee.MANAGER
DATA_ENG = EngEmployee.DATA_ENG
FRONTEND_DEV = EngEmployee.FRONTEND_DEV
BACKEND_DEV = EngEmployee.BACKEND_DEV
Ожидаемое поведение заключается в том, что разные типы могут считаться одним и тем же «супертипом». Например, целое число является одновременно целым числом и числом. Число, а число с плавающей запятой также является числом. Число:

Код: Выделить всё

print(isinstance(1, numbers.Number))                    # True
print(isinstance(1, int))                               # True
print(isinstance(1.2, numbers.Number))                  # True
Поэтому в идеале я бы хотел, чтобы сотрудник.PM считался как сотрудником, так и продуктом. Вот что я на самом деле получаю:

Код: Выделить всё

print(isinstance(Employee.PM, Employee))                # True
print(isinstance(Employee.PM, ProductEmployee))         # False
print(isinstance(Employee.PM._value_, ProductEmployee)) # True
Технически это может сработать, но тот факт, что мне приходится использовать ._value_, кажется неправильным. Есть ли лучший способ создания иерархии типов с помощью Enum?

Подробнее здесь: https://stackoverflow.com/questions/786 ... -hierarchy
Реклама
Ответить Пред. темаСлед. тема

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

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

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

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

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Лучший способ создания Enum с иерархией
    Anonymous » » в форуме Python
    0 Ответы
    12 Просмотры
    Последнее сообщение Anonymous
  • Python – лучший способ создания Enums с иерархией
    Anonymous » » в форуме Python
    0 Ответы
    16 Просмотры
    Последнее сообщение Anonymous
  • Проблема с иерархией и отношениями TPC в EF Core 8 + PostgreSQL
    Anonymous » » в форуме C#
    0 Ответы
    25 Просмотры
    Последнее сообщение Anonymous
  • Каковы различия между использованием нескольких подсказок типа or и abc и иерархией наследования в Python?
    Anonymous » » в форуме Python
    0 Ответы
    20 Просмотры
    Последнее сообщение Anonymous
  • Обработка вложенных диктовок с нерегулярной иерархией вложенности
    Anonymous » » в форуме Python
    0 Ответы
    18 Просмотры
    Последнее сообщение Anonymous

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