Для контекста я работаю над системой инвентаризации в RPG, и я прототипирую ее с помощью кода python.Создание динамических переменных для класса из класса
Я не понимаю, как сделать отдельные переменные для каждого экземпляра элемента без объявления их вручную. В качестве короткого примера:
class Player(object):
def __init__(self):
self.Items = {}
class Item(object):
def __init__(self):
self.Equipped = 0
class Leather_Pants(Item):
def __init__(self):
#What do i place here?
def Pick_Up(self, owner):
owner.Items[self.???] = self #What do i then put at "???"
def Equip(self):
self.Equipped = 1
PC = Player()
#Below this line is what i want to be able to do
Leather_Pants(NPC) #<-Create a unique instance in an NPC's inventory
Leather_Pants(Treasure_Chest5) #Spawn a unique instance of pants in a treasure chest
Leather_Pants1.Pick_Up(PC) #Place a specific instance of pants into player's inventory
PC.Items[Leather_Pants1].Equip() #Make the PC equip his new leather pants.
Если я сделал что-то глупо в приведенном выше коде, укажите его.
Что я хочу сделать, если код не дает понять, что я хочу иметь возможность динамически создавать переменные для всех элементов, когда я их создаю, поэтому никакие два элемента не будут иметь одинаковое имя переменной, которое будет служить как идентификатор для меня.
Я не против, если я должен использовать другой класс или функцию для него, как «Create_Item (Leather_Pants(), Treasure_Chest3)»
Какой самый лучший способ пойти об этом, или если вы думаете, что я» т. е. все это неправильно, каким образом было бы более правильным?
Когда вы вводите 'Leather_Pants1', определив два объекта' Leather_Pants', какой из них вы хотите? И почему? Каково правило? – abarnert
Не имеет значения, начинается ли мой индекс с 1 или 0. Но скажем, что это второй (т. Е. Тот, что у Treasure_Chest5) – Cestarian
В качестве побочного примечания: Возможно, вам стоит сначала рассмотреть игру на языке, например [Inform ] (http://inform7.com), разработанный специально для такого рода вещей, и имеет встроенные библиотеки для вещей, таких как одежда, npcs, инвентарь, сундуки. Это облегчает игру с более гибкими деталями вашего дизайна, а затем, когда вам будет удобно, вы можете попробовать реализовать тот же дизайн в Python. – abarnert