["python"]
Accessing an attribute using a variable in Python

How do I reference this_prize.left or this_prize.right using a variable? 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'
The expression this_prize.choice is telling the interpreter that you want to access an attribute of this_prize with the name "choice". But this attribute does not exist in this_prize. What you actually want is to return the attribute of this_prize identified by the value of choice. So you just need to change your last line using the getattr() method... 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)