@ilya_ya

Как сделать так, чтобы имя переменной было равно пользовательскому вводу?

Здравствуйте.
В общем начал я изучать классы в питоне и у меня сразу появилась идея сделать что-то типа базы данных. Я как-то думал, что это можно сделать через словарь, но поставил задачу сделать это именно через объекты класса.
class Person:
    
    name=None
    age=None
    def set(self):
        self.name=input('Как вас зовут? ')
        self.age=input('Сколько вам лет? ')
        
Ilya = Person()
Ilya.set()
Kirill=Person()
Kirill.set()
print(Ilya.name + ' ' + Ilya.age)
print(Kirill.name + ' ' + Kirill.age)


def generate(n):
    n=Person()
    n.set()
    print(n.name)

while True:
    v=input('Введите название вашей переменной ')
    generate(v)
    print(v.name)

В общем: Как сделать так, чтобы имя переменной было равно пользовательскому вводу из переменной name.
Помогите пожалуйста
  • Вопрос задан
  • 353 просмотра
Решения вопроса 1
@fireSparrow
Во-первых, так делать не надо, это чревато проблемами.
Гораздо проще и правильнее создать словарь и все динамически создаваемые объекты заносить туда. Тогда введённое пользователем имя можно будет использовать как ключ. Это убережёт от конфликтов с именами других переменных. И можно создать по отдельному словарю на разные типы динамически создаваемых объектов.

Но если очень уж хочется выстрелить себе в ногу, то можно делать так:
name = input()
globals()[name] = 5
print(abc)


Здесь если пользователь ввёл имя "abc", то скрипт напечатает 5. Если пользователь ввёл другое имя - получите ошибку.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
fox_12
@fox_12 Куратор тега Python
Расставляю биты, управляю заряженными частицами
Если я правильно понял, то:

>>> class Person(object):
...     pass
...
>>> name_var = 'age'
>>> name_val = 12
>>> p = Person()
>>> setattr(p, name_var, name_val)
>>> p.age
12
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
19 апр. 2024, в 13:31
10000 руб./за проект
19 апр. 2024, в 13:12
35000 руб./за проект
19 апр. 2024, в 13:06
6000 руб./за проект