Допустим, у меня есть класс и объект указанного класса:
class Rock:
def __init__(self, name, group):
self.name = name
self.group = group
granite = Rock('Granite', 'Igneous')
Теперь предположим, что я хочу, чтобы пользователь ввел камень, поэтому у меня есть такая строка:
rock = input('Type the name of a rock: ')
В зависимости от того, какой камень вводит пользователь, я хочу, чтобы он распечатал строку, например: «Гранит принадлежит к вулканической группе». Я могу получить эту строку, набрав:
print(granite.name + ' belongs to the ' + granite.group + ' group.')
Однако это дает только иллюзию выбора, поскольку если пользователь набирает любой камень, кроме гранита, он будет озадачен, почему единственный вывод касается гранита . В идеале я хотел бы иметь возможность вводить что-то вроде:
print(rock.name + ' belongs to the ' + rock.group + ' group.')
Где, независимо от того, что вводит пользователь, если есть объект с переменной, равной этой строке, переменная rock теперь будет равна сказал каменный объект. Однако это не работает, потому что пользователь вводит строку, а не класс переменной. Я могу обойти это, добавив оператор if, например:
if rock == 'granite':
rock = granite
Хотя, если я это сделаю, мне придется написать оператор if для КАЖДОГО рок-объекта, который у меня есть, и если у меня есть A МНОГО занятий роком, это было бы очень неэффективно. Итак, мой вопрос: есть ли способ, чтобы пользователь вводил фактическую переменную, а не просто строку? Если нет, мы будем благодарны за любой совет, как это сделать.