class hero():
def __init__(self, name="Jimmy", prof="Warrior", weapon="Sword"):
"""Constructor for hero"""
self.name = name
self.prof = prof
self.weapon = weapon
self.herodict = {
"Name": self.name,
"Class": self.prof,
"Weapon": self.weapon
}
self.herotext = {
"Welcome": "Greetings, hero. What is thine name? ",
"AskClass": "A fine name %s. What is thine class? " % self.herodict['Name'],
"AskWeapon": "A %s ? What shalt thy weapon be? " % self.herodict['Class'],
}
def setHeroDict(self, textkey, herokey):
n = raw_input(self.herotext[textkey])
self.herodict[herokey] = n
print self.herodict[herokey]
h = hero("Tommy", "Mage", "Staff")
h.setHeroDict("Welcome", "Name")
h.setHeroDict("AskClass", "Class")
好吧,我之前在这里问过一次,一个聪明的人告诉我尝试使用 lambdas。我试过了,它奏效了。伟大的!但是我的问题有点不同。正如我在那里所说,我对此很陌生,并且我的知识中有很多我试图填补的漏洞。基本上..我如何在不使用 lambdas 的情况下做得更好(或者人们通常为此使用 lambdas 吗?)
我想做什么:
- 有一个带有一些变量的英雄类,这些变量附加了一些默认值。
- 然后,我想使用一个定义,该定义可以使用 my
herotext
来使用其中一个值来提出问题。 - 用户然后回答问题,然后防御继续并更改适当的值
herodict
我试图通过的问题:
在我的herotext
我有一个值,它本身指向一个键herodict
。如链接中所述,我了解到这是由于在用户可以提供输入之前herodict
被初始化为默认值。herotext
因此它会打印出默认的(在本例中为 Tommy)名称,而不是“AskClass”self.herodict['Name']
值中的新用户输入名称。
我该如何解决?我不介意我是否必须制作另一个文件或其他什么,我只想知道做这种事情的更合乎逻辑的方式是什么?我整天都被困在这上面,我的想法是朋友。我知道这对你们很多人来说可能很简单,我希望你能分享你的知识。
谢谢