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")
よし、ここで一度これを尋ねたところ、賢い人がラムダを使ってみるように言った。私はそれを試してみましたが、うまくいきました。すごい!ただし、ここでの私の質問は少し異なります。私がそこで述べたように、私はこれにかなり慣れていないので、私の知識には埋めようとしている多くの穴があります. 基本的に..ラムダを使用せずにこれをより適切に行うにはどうすればよいですか(または、通常、これにラムダを使用しますか?)
私がやろうとしていること:
- いくつかのデフォルトが添付されたいくつかの変数を持つヒーロークラスを用意します。
herotext
次に、myを使用して値の 1 つを使用して質問できる定義を使用したいと考えています。- 次に、ユーザーが質問に答えると、その定義が進み、適切な値が変更されます
herodict
渡されようとしている問題:
私のherotext
中には、それ自体が のキーを指す値がありますherodict
。リンクで説明されているように、これは、ユーザーが入力を提供する前にherodict
デフォルト値に初期化されるためです。herotext
したがって、「AskClass」self.herodict['Name']
値の新しいユーザー入力名の代わりに、デフォルト (この場合は Tommy) の名前が出力されます。
これを修正するにはどうすればよいですか? 別のファイルなどを作成する必要があるかどうかは気にしません。この種のことを行うためのより論理的な方法を知りたいだけですか? 私は一日中これにこだわっていて、私の心は友達です。多くの人にとっては簡単なことかもしれませんが、知識を共有していただければ幸いです。
ありがとう