Выбор аргумента из списка при инициализации экземпляра класса
Предположим, есть список доступных рас персонажа.
Как при инициализации реализовать выбор из существующего списка, что бы исключить опечатки и прочие связанные с этим трудности?
race_list = ['Orc','Elf','Human']
class Hero:
def __init__(self,race):
self.race = race
У меня есть идея вывести список рас и предложить выбор:
class Hero:
def __init__(self,race=int(input('Выберите расу героя:\n1: Orc\n2: Elf\n3: Human\n'))):
self.race = race_list[race - 1]
Anduin = Hero()
Есть ли более элегантный метод реализации?
Ответы (1 шт):
Автор решения: Vasily
→ Ссылка
Я бы сделал так:
Сделал бы базовый класс BaseRace
Для каждой рассы создавал бы класс, унаследованный от BaseRace (По хорошему нужна фабрика классов)
Рассу бы принимал из input-а или откуда угодно, создавая соответствующий экземпляр класса
В вашем классе в init проверял бы через issubclass проверял бы, что расса это один из существующих классов:
def __init__(self, race):
assert issubclass(race, BaseRace)