Доступ к атрибуту с использованием переменной в Python

Как мне ссылаться на this_prize.left или this_prize.right с использованием переменной?

 from collections import namedtuple import random Prize = namedtuple("Prize", ["left", "right"]) this_prize = Prize("FirstPrize", "SecondPrize") if random.random() > .5: choice = "left" else: choice = "right" # retrieve the value of "left" or "right" depending on the choice print("You won", this_prize.choice) AttributeError: 'Prize' object has no attribute 'choice' 

Выражение this_prize.choice сообщает интерпретатору, что вы хотите получить доступ к атрибуту this_prize с именем «choice». Но этот атрибут не существует в this_prize.

Вы действительно хотите вернуть атрибут this_prize, идентифицированный по выбору. Поэтому вам просто нужно изменить свою последнюю строку …

 from collections import namedtuple import random Prize = namedtuple("Prize", ["left", "right" ]) this_prize = Prize("FirstPrize", "SecondPrize") if random.random() > .5: choice = "left" else: choice = "right" #retrieve the value of "left" or "right" depending on the choice print "You won", getattr(this_prize,choice)