如何调用获取Python类的成员函数中定义的变量?
你现有代码里各个方法内部定义的name、hp都是函数局部变量,函数执行完成后就会被销毁,外部无法直接访问,需要先调整类的实现逻辑,下面给两种可行方案:
方案1:最小改动适配原有结构
直接修改各个方法返回装备属性字典,调用时直接取值即可:
class Character(): def Armor(): return {'name': 'Leather armor', 'hp': 10} def Helmet(): return {'name': 'Leather helmet', 'hp': 5} def Sword(): return {'name': 'Wooden sword', 'dps': 5} def Name(): return None # 调用实现打印效果 armor_info = Character.Armor() helmet_info = Character.Helmet() print(f"You have: {armor_info['name']} with hp {armor_info['hp']}, {helmet_info['name']} with hp {helmet_info['hp']}")
方案2:面向对象标准实现(更推荐)
正常逻辑下装备属于角色实例的属性,调整为实例属性写法扩展性更强,后续换装备、加属性都更方便:
class Character(): def __init__(self, role_name): self.name = role_name # 初始化默认装备属性 self.armor = {'name': 'Leather armor', 'hp': 10} self.helmet = {'name': 'Leather helmet', 'hp': 5} self.sword = {'name': 'Wooden sword', 'dps': 5} # 实例化角色 player = Character("新手冒险者") # 打印装备 print(f"You have: {player.armor['name']} with hp {player.armor['hp']}, {player.helmet['name']} with hp {player.helmet['hp']}")
后续要替换装备直接修改对应属性即可,比如player.armor = {'name':'Iron armor', 'hp': 30}就完成了护甲升级。
内容的提问来源于stack exchange,提问作者Cataclysm88
相关产品推荐
相关产品推荐

