У меня есть список namedtuples с именем Books
и я пытаюсь увеличить поле price
на 20%, что меняет значение Books
. Я пытался:
from collections import namedtuple
Book = namedtuple('Book', 'author title genre year price instock')
BSI = [
Book('Suzane Collins','The Hunger Games', 'Fiction', 2008, 6.96, 20),
Book('J.K. Rowling', "Harry Potter and the Sorcerer Stone", 'Fantasy', 1997, 4.78, 12)]
for item in BSI:
item = item.price*1.10
print(item.price)
Но я продолжаю получать:
Traceback (most recent call last):
print(item.price)
AttributeError: 'float' object has no attribute 'price'
Я понимаю, что я не могу установить поля в namedtuple. Как мне обновить price
?
Я попытался включить его в функцию:
def restaurant_change_price(rest, newprice):
rest.price = rest._replace(price = rest.price + newprice)
return rest.price
print(restaurant_change_price(Restaurant("Taillevent", "French", "343-3434", "Escargots", 24.50), 25))
но я получаю сообщение об ошибке с заменой:
rest.price = rest._replace(price = rest.price + newprice)
AttributeError: can't set attribute
Кто-нибудь может сообщить мне, почему это происходит?