嗨,我有一个程序,我用字典来创建玩家,统计是名字,攻击,防守,总计。我是否有办法在字典中设置总数,或者我必须在字典外加进攻击和防御,然后把它放回字典里?
Player1 = {
"name":"Bob",
"attack":7,
"defence":5,
"total":Player1["attack"]+Player1["defence"],
}发布于 2022-01-31 13:53:12
不幸的是,就我所知,你的要求是做不到的.你最好用一门课
就像这样:
class Player:
def __init__(self):
self.name = "Bob"
self.attack = 7
self.defence = 5
self.total = self.attack + self.defence
player = Player()
print(player.total)您需要记住的是,在声明dict时没有实例化它,因此在{}中不能调用Player1,因为上下文中还不存在它。
通过使用类,您还可以通过执行以下操作来重用上面的示例:
class Player:
def __init__(self, name, attack, defence):
self.name = name
self.attack = attack
self.defence = defence
self.total = self.attack + self.defence
player1 = Player(name="bob", attack=7, defence=5)
player2 = Player(name="bill", attack=10, defence=7)
print(player1.total)
print(player2.total)编辑:固定排版
发布于 2022-01-31 13:53:58
您目前正在尝试在创建Player1之前访问它。
你可以这样做:
Player1 = {
"name":"Bob",
"attack":7,
"defence":5
}
Player1["total"] = Player1["attack"] + Player1["defence"]但是,这并不理想,因为每当'total'或'defence'更改时,您都需要记住调整'defence'字段。最好是动态计算总价值,因为这不是一个昂贵的计算。
这可以通过编写带有属性Player的total类来实现。
class Player:
def __init__(self, name, attack, defence):
self.name = name
self.attack = attack
self.defence = defence
@property
def total(self):
return self.attack + self.defence演示:
>>> Player1 = Player('Bob', 1, 2)
>>> Player1.name, Player1.attack, Player1.defence, Player1.total
('Bob', 1, 2, 3)发布于 2022-01-31 14:38:12
假设您不想自己计算键总数的值。您可以将其初始化为None (标准实践)。总比忽略它好)。
Player1 = {
"name":"Bob",
"attack":7,
"defence":5,
"total":None
}然后稍后更新它的值。
Player1["total"] = Player1["attack"] + Player1["defence"]https://stackoverflow.com/questions/70927012
复制相似问题