【发布时间】:2018-08-04 02:05:03
【问题描述】:
我正在尝试构建一款 Survivor 游戏,让我可以将存储的角色单独和作为部落成员进行比较。我可以用一个属性来做,但想不出将它扩展到多个属性的最佳方法。
例子:
TribeAStr = {'John': 50, 'Tyler': 55, 'Joe': 90, 'Bob': 55}
# check who is the strongest Survivor
$ strongest = max(TribeAStr, key=TribeAStr.get)
#Remove him from TribeA
del TribeAStr[strongest]
#Check how strong the Tribe is as a whole
$ tribeastrength = sum(TribeAStr.values())
我想做的是让每个幸存者都有自己的属性,然后使用他们的名字作为密钥,然后可以将其拉入与上述类似的场景中。像这样的:
class Survivor:
def __init__(self, name, str=None, int=None, cha=None, luk=None):
self.name = name
self.str = strength
self.int = intelligence
self.cha = charisma
self.luk = luck
TribeA = {}
John = Survivor{'John', 50, 40, 55, 20}
Bob= Survivor{'Bob', 55, 40, 80, 25}
Joe= Survivor{'Joe', 60, 10, 65, 10}
Tyler= Survivor{'Tyler', 56, 30, 15, 25}
TribeA.update('John', 'Bob', 'Joe', 'Tyler')
# check who is the strongest Survivor
$ strongest = max(Survivor, Survivor.str) for Survivor in TribeA
有什么建议吗?
【问题讨论】:
-
附带说明:我知道
str和int显然意味着力量和智力——但是当你的大脑处于 Python 模式而不是 D&D 模式时,它会将它们读取为字符串和整数类型。将str和int用作属性(与将它们用作全局或局部变量名称不同)并不违法或危险,但除非她在 d20 上滚动到 wis 下,否则它仍然会让读者感到厌烦,所以你可能想要至少考虑使用不同的名称。 -
还有一件事:你为什么允许
None作为所有初始化参数的默认值?你会如何处理一个拥有None的幸存者str?当您第一次尝试将其与其他人的str或 d100 卷或其他内容进行比较时,您只会得到TypeError。
标签: python class dictionary compare