#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
в строке