Как вызвать метод класса для экземпляра имя которого получено с input()

class Robot:

    def __init__(self, name):
        self.name = name
        print(f'Рообот {self.name} создан')

    def jump(self):
        print(f'Робот {self.name} подпрыгнул')

robot1 = Robot('R2-D2')
robot2 = Robot('C-3PO')

jumper = input('Какой робот должен подпрыгнуть?')
jumper.jump()

Если ввести "robot1" должно вывестись "Робот R2-D2 подпрыгнул". Но возвращается ошибка: AttributeError: 'str' object has no attribute 'jump'.

Наверное глупый вопрос: какого типа данных название атрибута класса?


Ответы (2 шт):

Автор решения: Sherlock
class Robot:

    def __init__(self, name):
        self.name = name
        print(f'Робот {self.name} создан')

    def jump(self):
        print(f'Робот {self.name} подпрыгнул')

robot1 = Robot('R2-D2')
robot2 = Robot('C-3PO')

jumper = input('Какой робот должен подпрыгнуть?: ')

if jumper.lower() == 'r2-d2':
    robot1.jump()
if jumper.lower() == 'c-3po':
    robot2.jump()
else:
    print('Error')
→ Ссылка
Автор решения: S. Nick

Попробуйте так:

class Robot:
    def __init__(self, name):
        self.name = name
        print(f'Рообот {self.name} создан')

    def jump(self):
        print(f'\nРобот {self.name} подпрыгнул')

robot1 = Robot('R2-D2')
robot2 = Robot('C-3PO')

jumper = input('\nНаберите что должно подпрыгнуть R2-D2  или C-3PO: ') 
#jumper.jump()
if jumper == robot1.name:
    robot1.jump()
elif jumper == robot2.name:
    robot2.jump()
→ Ссылка