Почему добавление объектов в глобальные списки работают во время инициализации объекта, но не после инициализации?Python

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Почему добавление объектов в глобальные списки работают во время инициализации объекта, но не после инициализации?

Сообщение Anonymous »

Я пишу очень простую текстовую игру Escape, чтобы практиковать основы, которые я узнал до сих пор. Я просто запускаю его в онлайн -редакторе. У меня были проблемы с добавлением объектов класса в глобальный список, и я узнал, что это потому, что я инициализировал объекты, а затем добавил их в список. После переписывания, чтобы объекты были добавлены в список во время их инициализации, это сработало. Почему? (Игра еще не сделана, как вы увидите, я просто хочу захватить то, что происходит, прежде чем я продолжу.) < /P>
Оригинал, не работает: < /p>
class items():
def __init__(self, item, canOpen):
self.item = item
self.canOpen = canOpen

def pickup():
choice = input(f"There's some stuff on this shelf: {freeItems} - What will you pick up?")
#When freeItems is called, it displays [, ]
if choice not in freeItems:
print(f"What? There's no {choice} here. Choose again.")
#This runs no matter what I input, presumably because of the calling issue.
choice = input()
else:
playerInventory.append(choice)
freeItems.remove(choice)
print(f"""{choice} added to inventory!
These items remain on the shelf: {freeItems}
Let's try opening the door.""")

key = items("key",True)
flashlight = items("flashlight",False)
mirror = items("mirror",False)

freeItems = [key, flashlight, mirror]
playerInventory = []

playerName = input("Hi there! What's your name?")
print(f"Hi, {playerName}. So, bad news: you're trapped in this room. Good news: Your trusty disembodied narrator is here to help!")

pickup()
< /code>
новый, работа: < /p>
freeItems = []
playerInventory = []

class items():
def __init__(self, item, canOpen):
self.item = item
self.canOpen = canOpen
freeItems.append(self.item) #This is the new code that made it work

def pickup():
choice = input(f"There's some stuff on this shelf: {freeItems} - What will you pick up?")
if choice not in freeItems:
print(f"What? There's no {choice} here. Choose again.")
choice = input()
else:
playerInventory.append(choice)
freeItems.remove(choice)
print(f"""{choice} added to inventory!
These items remain on the shelf: {freeItems}
Let's try opening the door.""")

key = items("key",True)
flashlight = items("flashlight",False)
mirror = items("mirror",False)

playerName = input("Hi there! What's your name?")
print(f"Hi, {playerName}. So, bad news: you're trapped in this room. Good news: Your trusty disembodied narrator is here to help!")

pickup()
< /code>
В исходном коде я попытался добавить существующие объекты класса в глобальный список. Я ожидал, что объекты будут просто в списке, как будто я добавил в нее обычную переменную. На самом деле произошел этот вывод, когда был назван список: [ main .Items объект AT 0x7f4fbf4e08b0>, main .Items объект по адресу 0x7f4fbf4b3f70>], и я впоследствии не смог использовать список для намеченной цели. инициализация. Это сработало, как и предполагалось. Я просто не понимаю, в чем разница в программе.

Подробнее здесь: https://stackoverflow.com/questions/795 ... tion-but-n
Реклама
Ответить Пред. темаСлед. тема

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

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

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

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

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

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