Могу ли я использовать переменную с атрибутом / функцией класса?

#python #python-3.x

Вопрос:

Это не позволяет мне использовать переменную с атрибутом класса. Не знаю, как с этим справиться. Мне нужно, чтобы ответ вышел как 7. Но мне нужно уметь использовать для этого переменную. выдает мне ошибку,

Обратная связь (последний последний вызов): Файл «c:/Data/First Игра (Python)/rough.py», строка 32, в.add_2(5) Ошибка атрибута: объект » str » не имеет атрибута «x»

Я думаю, что он не в состоянии распознать, что под a я имел в виду упомянуть Me1.

 class Test():
    def add_2(self, y):
        print(y   2)

Me1 = Test()

for i in range (1):
    a = "Me"   str(i 1)
    print (a)
    a.add_2(5)
 

Комментарии:

1. a is string object и Me1 is a class object ты не можешь так поступить. Пожалуйста, укажите, чего вы хотите достичь.

2. a = eval("Me" str(i 1)) должно сработать, но зачем ты это делаешь? такой подход не имеет смысла.

3. Погрузитесь в объекты класса: docs.python.org/3/tutorial/classes.html#class-objects

4. Если Me1.add_2(5) вы будете печатать 7 , это ожидаемый результат?

5. В вашем вопросе нет ничего, что объясняло бы, почему вам нужно зацикливаться или нужно динамически создавать строку, соответствующую имени переменной… и т. Д. Если вы хотите сослаться Me1 , почему бы просто не сделать это? Зачем вообще петлять?

Ответ №1:

Это не имеет никакого смысла при построении объекта класса во время выполнения, если вы не изучаете что-то, чему нужно научиться. Но вот то, что вы ищете,

 class Test():
    def add_2(self, y):
        print(y   2)

Me1 = Test()

for i in range (1):
    a = "Me"   str(i 1)
    print(a)
    b = eval(a) # converting str to Class Test object
    b.add_2(5)
 

Выход:

 Me1
7
 

Ссылка: https://docs.python.org/3/library/functions.html#eval

Комментарии:

1. Спасибо, да, это только для учебных целей. Совсем новичок в этом, поэтому не был уверен, в чем заключалась ошибка.

2. Круто, пожалуйста, примите ответ, если это вам поможет!

Ответ №2:

Из того, что я вижу, переменная a является строкой, в то время как функция a.add_2(5) принадлежит объектам класса Test . Ошибка вызвана тем фактом, что вы вызываете метод класса Test в строке