社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  Python

在Python中,将对象作为值存储在key:value对中是否安全?

Caritas • 3 年前 • 1179 次点击  

我在设计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。名称(这只是一个字符串,我是这样写的)而不是打印整个项目。我对创建包含对象的词典列表的安全性和有效性更感好奇。

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/130408
 
1179 次点击  
文章 [ 1 ]  |  最新文章 3 年前