Pythonでは辞書を使ってクラスをインスタンス化できますか?クラスの辞書?
shapes = {'1':Square(), '2':Circle(), '3':Triangle()}
x = shapes[raw_input()]
私は、ユーザーがメニューから選択せ、入力時にelseステートメント場合は、巨大なコーディングしないようにしたいです。たとえば、ユーザーが2を入力した場合、xはCircleの新しいインスタンスになります。これは可能ですか?
Pythonでは辞書を使ってクラスをインスタンス化できますか?クラスの辞書?
shapes = {'1':Square(), '2':Circle(), '3':Triangle()}
x = shapes[raw_input()]
私は、ユーザーがメニューから選択せ、入力時にelseステートメント場合は、巨大なコーディングしないようにしたいです。たとえば、ユーザーが2を入力した場合、xはCircleの新しいインスタンスになります。これは可能ですか?
ほぼ。何がしたいことは
shapes = {'1':Square, '2':Circle, '3':Triangle} # just the class names in the dict
x = shapes[raw_input()]() # get class from dict, then call it to create a shape instance.
うわー。私たちはそれを行うことができないのは分かりません。それは非常にpythonicです。ありがとうございましたvinay sajip ... –
である私はチュー機能をお勧めします:
def choose(optiondict, prompt='Choose one:'):
print prompt
while 1:
for key, value in sorted(optiondict.items()):
print '%s) %s' % (key, value)
result = raw_input() # maybe with .lower()
if result in optiondict:
return optiondict[result]
print 'Not an option'
result = choose({'1': Square, '2': Circle, '3': Triangle})()
あなたは何が起こったのか、それを試みたのはいつですか? –
さて、私はメニューでそれをやっているだけで、一般的なメニューラッパーは、どのメニューをロードするかを処理しています。私は非常にこれに新しいです: -/ – mandroid
はい、それは可能です、あなたはそれを正しくやっているあなたは、最初に一度一度すべての図形をインスタンス化し、dictにインスタンスを格納し、それらの1つをx 。選択したクラスだけをインスタンス化する場合、または個々の図形を複数回インスタンス化する場合は、Vinayの答えを使用します。 – Markus