2017-07-09 12 views
-1

pythonのクラスと文字列に問題がありますraw_inputから与えられた文字列を使ってクラスオブジェクトの名前を付けたいと思います。私はそれをしようとしましたが、コードは機能しませんでした。私はstackoverflow.comの多くの記事を検索しましたが、これらのどれも答えられませんでした。私はPythonのネオファイトです。クラスとインスタンスの動作を知っていますが、この問題を解決するのに役立つ関数はわかりません。pythonのオブジェクト名と入力文字列に問題がある

class example: 
    def _init_(self ,name): 
     self.name=name 
     input1 = raw_input("") 

input1 = example() 
+0

安全な方法は、キーとして使用され、ユーザの入力と辞書を使用することができます。 –

答えて

1

私はあなたがこれを行うことを推奨していないんだけど、それを行うための一つの方法は、exec()である:ユーザーは、プロンプトでクラスのインスタンスを「ABCD」を入力したと仮定すると

class Example: 
    pass 

name = raw_input("Enter name: ") 
exec('{} = Example()'.format(name)) 

Exampleは「ABCD」という名前の変数にバインドされます:

>>> abcd 
<__main__.Example instance at 0x7f841fb45908> 

これを行うには、任意の本物の理由はほとんどありません、とexec()を実行することができますので、私はこの方法をお勧めしません。任意のユーザー入力が重大なセキュリティ上の問題を引き起こします。

もう一つの方法は、globals()辞書更新することです:

name = raw_input("Enter name: ") 
globals()[name] = Example() 

をが、これはおそらく、いずれかを実行するための最良のものではありません、あなたが達成しようとしているものに応じてより良い方法は、通常はあります。あなたのインデントをしてください修正

user_vars = {} 
name = raw_input("Enter name: ") 
user_vars[name] = Example() 

>>> user_vars['abcd'] 
<__main__.Example instance at 0x7f841fb45908> 
関連する問題