from enum import Enum, EnumMeta
from typing import NamedTuple
class Student(NamedTuple):
first_name: str
last_name: str
date_of_birth: str
class StudentsMeta(EnumMeta):
def __new__(metacls, cls, bases, classdict):
# Instantiate data or Load the the data from file
data = {
"student1": {"first_name": "Alice", "last_name": "Smith", "date_of_birth": "2001-01-01"},
"student2": {"first_name": "Bob", "last_name": "Johnson", "date_of_birth": "2002-02-02"},
}
# Create and add enum members
for student_key, student_info in data.items():
student = Student(**student_info)
classdict[student_key] = student
# Create the new enum class
return super().__new__(metacls, cls, bases, classdict)
class Students(Enum, metaclass=StudentsMeta):
pass
if __name__ == "__main__":
print(Students.student1.value)
print(Students.student2.value)