Использование переменной в качестве имени экземпляра в Python [дубликат] ⇐ Python

Программы на Python
Anonymous
Использование переменной в качестве имени экземпляра в Python [дубликат]

Сообщение Anonymous »

Я пишу текстовую приключенческую игру а-ля Zork.
Я получаю, что объект 'str' не имеет атрибута 'name' при попытке доступа к свойствам экземпляра через переменную.
Пример:

Код: Выделить всё

class Location():

def __init__(self,name):
self.name = name

def __str__(self):
return name

forest = {
"name" : "Ye olde forest",
}

forest = Location(**forest)

print(forest.name) #ok

foo = "forest"
print(foo.name) #gives 'str' object has no attribute 'name'

Код: Выделить всё

print(forest.name)
работает нормально.

Код: Выделить всё

print(foo.name)
не работает.
Моя идея состоит в том, чтобы использовать код, который будет одинаковым независимо от того, в каком месте находится игрок, для проверки таких вещей, как: темно ли это место (т. е. нужна ли игроку горящая лампа) и т. д. Например:

Код: Выделить всё

current_location = "forest"
if current_location.light == 0:
#prevent player from seeing items at location
Это работает, если я использую dicts, но вместо этого я бы хотел использовать классы и свойства для более чистого кода, если это возможно. С помощью dicts я получаю код, например, if location['forest']['light'] == 0. Что касается классов, я надеялся, что это будет просто, если location.light == 0.

Подробнее здесь: https://stackoverflow.com/questions/798 ... -in-python

Вернуться в «Python»