2017-07-09 67 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()

class Example: 
    pass 

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

假設用戶輸入「ABCD」的提示,類的一個實例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>