Использование переменной в качестве имени экземпляра в 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
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

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