Edit:AttributeError: «ул» объект не имеет атрибута «местоположение» - Python
Я передаю вход через с помощью модуля CMD (в настоящее время тестирует его, набрав take bat
), я новичок в Python тоже так Прошу прощения, если это не то, о чем люди спрашивали в ответах. Прочитав еще один ответ в другом месте на этом сайте, я думаю, что ошибка может означать что-то вроде этого, вход - это строка, а не объект с тем же именем. Если это так, то можно ли каким-либо образом определить, что они поставили в качестве аргумента для «взять» в качестве объекта, который соответствует? Я не уверен, как задать этот вопрос или даже если я использую правильную терминологию для его поиска, но если кто-то сможет подтвердить, что это моя проблема, и указать мне в общем направлении ответа на мой второй вопрос: с удовольствием посмотрел бы сам.
Следующий код разбит на четыре или около того файлов, чтобы облегчить для себя чтение, и он работает (на всякий случай, показывая это, похоже, что есть больше проблем, чем есть). Сейчас только часть я ударил ошибку с это do_take
команды
import cmd
import json
def get_room(id):
ret = None
with open(str(id)+".json", "r") as new:
jsontext = new.read()
current = json.loads(jsontext)
current["id"] = id
ret = Room(**current)
return ret
class Game(cmd.Cmd):
def __init__(self):
cmd.Cmd.__init__(self)
self.loc = get_room(1)
def do_take(self, item_name):
"""This is my take command, to be followed by an item name, which is giving me the error"""
if item_name.location == self.loc.id:
item_name.location = "backpack"
print(item_name.location)
class Item(object):
"""This is the basic class that all items will inherit from"""
def __init__(self, itemname, defence, attack, weight, location, hidden):
self.itemname = itemname
self.defence = defence
self.attack = attack
self.weight = weight
self.location = location
self.hidden = hidden
bat = Item("Baseball Bat", 1, 4, 1, 1, False)
Я печатаю «взять биту», который вызывает do_take (и т.д ...), чтобы попытаться получить расположение пункта , проверьте его против моего текущего местоположения (если он был указан ранее), а затем, если совпадения, измените расположение предмета на «рюкзак»
местоположения совпадают, а когда я print(item_name.location)
Я получаю 1 в результате, но когда я пытаюсь соответствовать ему Я получаю AttributeError: 'str' object has no attribute 'location'
Любая помощь, помогающая этому, была бы очень признательна, и это мой первый пост здесь, поэтому я приношу свои извинения, если я что-то поменял.
Что вы передадите 'do_take' с' item_name'? – TigerhawkT3
Возможно, вы можете передать строку 'do_take', не могли бы вы разместить дополнительную информацию? –
Редактируйте свой вопрос, чтобы включить пример кода, который вызывает 'do_take', который вызывает ошибку. – shuttle87