[英]How to do variable assignment inside a while(expression) loop in Python?
[英]How do i complete maths and variable assignment inside a dictionary in python?
Player1 = {
"name":"Bob",
"attack":7,
"defence":5,
"total":Player1["attack"]+Player1["defence"],
}
如何将字典中的总数设置为攻击+防御?
不幸的是,据我所知,您要问的问题是……您最好使用 class
像这样:
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)
编辑:修正错字
您当前正在尝试在创建Player1
之前访问它。
你可以这样做:
Player1 = {
"name":"Bob",
"attack":7,
"defence":5
}
Player1["total"] = Player1["attack"] + Player1["defence"]
但是,这并不理想,因为您需要记住在'attack'
或'defence'
发生变化时调整'total'
字段。 最好即时计算总值,因为它不是昂贵的计算。
这可以通过编写具有属性total
的Player
class 来实现。
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)
假设您不想自己计算键总计的值。 您可以将其初始化为None
(标准做法。比省略它更好)。
Player1 = {
"name":"Bob",
"attack":7,
"defence":5,
"total":None
}
然后稍后更新它的值。
Player1["total"] = Player1["attack"] + Player1["defence"]
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.