AttributeError: объект 'tuple' не имеет атрибута
Я начинающий в python. Я не могу понять, в чем проблема?
def list_benefits():
s1 = "More organized code"
s2 = "More readable code"
s3 = "Easier code reuse"
s4 = "Allowing programmers to share and connect code together"
return s1,s2,s3,s4
def build_sentence():
obj=list_benefits()
print obj.s1 + " is a benefit of functions!"
print obj.s2 + " is a benefit of functions!"
print obj.s3 + " is a benefit of functions!"
print build_sentence()
Ошибка, которую я получаю:
Traceback (most recent call last):
Line 15, in <module>
print build_sentence()
Line 11, in build_sentence
print obj.s1 + " is a benefit of functions!"
AttributeError: 'tuple' object has no attribute 's1'
Ответы
Ответ 1
Вы возвращаете четыре переменные s1, s2, s3, s4 и выводите их с использованием одной переменной obj. Это то, что называется tuple
, obj связано с 4 значениями, значениями s1,s2,s3,s4
. Таким образом, используйте индекс, как вы используете в списке, чтобы получить нужное значение в порядке.
obj=list_benefits()
print obj[0] + " is a benefit of functions!"
print obj[1] + " is a benefit of functions!"
print obj[2] + " is a benefit of functions!"
print obj[3] + " is a benefit of functions!"
Ответ 2
Вы возвращаете tuple
. Индексируйте его.
obj=list_benefits()
print obj[0] + " is a benefit of functions!"
print obj[1] + " is a benefit of functions!"
print obj[2] + " is a benefit of functions!"
Ответ 3
Имена переменных только локально значимы.
Как только вы нажмете
return s1,s2,s3,s4
в конце метода Python строит кортеж со значениями s1, s2, s3 и s4 в качестве четырех его членов в индексе 0, 1, 2 и 3 - НЕ словарь переменных имен для значений, НЕ объект с именами переменных и их значениями и т.д.
Если вы хотите, чтобы имена переменных были значимыми после нажатия return
в методе, вы должны создать объект или словарь.