我在设计RPG背后的机械装置。有物品、玩家、NPC等类。玩家类有库存和装备属性。设备是一个字典列表,例如:
player1.equipment = [{item_slot_a:item_a}, {item_slot_b:item_b}, ..., {item_x:item_x}]
在这里
item_slot_a
指一些任意的“物品”槽,如头盔、靴子、手套等,以及
item_a
指的是Item类、item1或类似的实例。因此,请注意,整个对象被存储为key:value字典对的值。
这样行吗?
将整个对象作为值传递是否安全、高效、可靠?直到我测试了这个系统,我才注意到这会发生
player.equip(thing)
作用我有一个(希望)聪明的方法来为装备项目确定合适的装备槽,然后我。。。嗯……”将“项”作为键:值对绑定到项槽。我打印了清单来测试equip()函数,看到了以下内容:
player1 = create_player('Bob', 'reaver', 1)
player1.show_equipment()
player1.equip(piece_of_gear)
player1.show_equipment()
Output: [{'helmet': None}, {'torso': None}, {'hand': <__main__.Gear object at 0x000001FF200BC0D0>}, {'legs': None}, {'foot': None}, {'neck': None}, {'ring': None}, {'ear': None}, {'charm': None}, {'mh_weapon': None}, {'oh_weapon': None}, {'twohand_weapon': None}]
如果我是正确的,这是一个打印函数,它在内存中返回一个表示对象的地址。这代表什么问题吗?如果我只是使用对象作为存储机制来检索相关值(其预期用途),我通常不会看到这种情况,这可能只是我没有正确设计
show_equipment()
作用
请尽可能对我的代码的结构和可靠性提出建议。如有任何意见,将不胜感激。
作为参考,我的
player.show_equipment
函数如下所示:
print('Equipment:')
print(self.equipment)
return\`\`\`
显然,如果我想准确地打印设备列表中的内容,我可以在内存中检索对象(这将是Item类的一个实例),然后打印Item。名称(这只是一个字符串,我是这样写的)而不是打印整个项目。我对创建包含对象的词典列表的安全性和有效性更感好奇。