【发布时间】:2013-06-01 01:42:51
【问题描述】:
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")
好吧,我在here 之前问过这个问题,一个聪明的人告诉我尝试使用 lambdas。我试过了,它奏效了。伟大的!但是我的问题有点不同。正如我在那里所说,我对此很陌生,并且我的知识中有很多我试图填补的漏洞。基本上..我如何在不使用 lambdas 的情况下做得更好(或者人们通常为此使用 lambdas 吗?)
我想做什么:
- 有一个带有一些变量的英雄类,这些变量有一些默认值 附在他们身上。
- 然后我想使用一个可以去使用我的
herotext的定义 使用其中一个值提出问题。 - 然后用户回答问题,然后防御继续
更改
herodict中的相应值
我试图通过的问题:
在我的herotext 中,我有一个值,它本身指向herodict 中的一个键。如链接中所述,我了解到这是由于 herodict 与 herotext 在用户可以提供输入之前被初始化为默认值。因此,它会打印出默认的(在本例中为 Tommy)名称,而不是“AskClass”self.herodict['Name'] 值中的新用户输入名称。
我该如何解决这个问题?我不介意我是否必须制作另一个文件或其他什么,我只想知道做这种事情的更合乎逻辑的方式是什么?我整天都被困在这上面,我的想法是朋友。我知道这对你们很多人来说可能很简单,我希望你能分享你的知识。
谢谢
【问题讨论】:
标签: python initialization definition