Python 未将元素添加到字典-RPG项目系统

Python 未将元素添加到字典-RPG项目系统,python,Python,我在我的RPG中实现了一个库存系统,我试图让它给我项目名称、重量、项目数量等。我在获取项目数量方面遇到了问题。这是我的代码 class Item(): def __init__(self, name, damage, armor, weight, value, itype, rarity): self.name = name self.damage = damage self.armor = armor self.weigh

我在我的RPG中实现了一个库存系统,我试图让它给我项目名称、重量、项目数量等。我在获取项目数量方面遇到了问题。这是我的代码

class Item():
    def __init__(self, name, damage, armor, weight, value, itype, rarity):
        self.name = name
        self.damage = damage
        self.armor = armor
        self.weight = weight
        self.value = value
        self.itype = itype
        self.rarity = rarity


class Inventory():

    def __init__(self):
        self.items = {}

    def add_item(self, item):

        self.items[item.name] = item

    def print_items(self):
        print('\t'.join(['Name', 'Atk', 'Arm', 'Kg', 'Val', 'Type', 'Rarity']))

        for item in self.items.values():
            print('\t'.join([str(x) for x in [item.name, item.damage, item.armor, item.weight, item.value, item.itype, item.rarity]]))

Items = {
    'dragonbane': Item('Dragon bane', 60, 0, 5, 1000, 'Weapon', '.oOo. LEGENDARY .oOo.'), # Name, Damage, Armour, Weight, Type, Rarity
    'trainingsword': Item('Training Sword', 2, 0, 5, 10, 'Weapon', '[ Common ]')} 

inventory = Inventory()

inventory.add_item(Items['dragonbane']

inventory.print_items()
输出:

Name    Atk Arm Kg  Val Type    Rarity
Dragon bane 60  0   5   1000    Weapon  .oOo. LEGENDARY .oOo.
但如果我加上两个龙鞭,它只会打印一次龙鞭。我根本不知道如何添加一个系统来计算玩家拥有一件物品的数量


提前感谢:D

您最好使用和UID唯一ID,而不是项目名称作为项目的标识符

又例如:

def get_uid():
    return random.randint(123456789,987654321)
#here you need to check also for already existing numbers - it's just an example

self.items[get_uid()] = item

在项目构造中,只需添加: self.uid=randint1,9999999


*PS:别忘了从random import randint导入顶部的random模块。

您使用的是一个dict,其键是项目名称。这意味着每个名称只能有一项。如果您希望多个项目具有相同的名称,则不要使用dict或使用不同的唯一键。@TomKarzes谢谢!我一直在尝试检测元素是否存在,然后将数字放入字典中。这可能吗?不要使用这个get\u uid函数。这完全没有必要。如果需要唯一的id,可以使用idobject,它是一个内置函数。或者您可以使用类实例本身作为dict键,即d[object]=object。事实上,你可能只需要一个列表——不清楚数据是如何被访问的,但是如果你只需要能够遍历它,那么一个列表就足够了。