我想創建一個類的實例從一個字符串用戶輸入,所以我用exec()函數。問題是我無法通過函數外部的名稱來訪問實例。我的第一個想法是,它是一個函數範圍的問題,我仍然認爲它是,但是當我將實例放入列表中時,我可以訪問它們,而不是使用它們的名稱。我真的不知道這裏發生了什麼..有沒有辦法讓我可以通過他們的名字來訪問實例,比如thing1.properties
,但是在函數之外,因爲這不是我的整個代碼,所以將所有的函數放在外面會很麻煩?就像在函數中創建實例列表並「提取」函數外的所有實例一樣,以便我可以在函數之外訪問它們。下面是代碼:類和函數範圍
class Things:
def __init__(self, properties):
self.properties = properties
listt = []
def create_instance():
exec("thing1=Things('good')")
listt.append(thing1)
create_instance()
print listt[0].properties
print thing1.properties
這是幾乎可以肯定實現你的目標的一個非常貧困的方法。你想做什麼? – rlms 2014-12-05 18:44:11
我在問題中寫道。我想從輸入的字符串用戶創建一個類的實例。因此,當用戶鍵入「thing1」實例thing1 = Things()時創建。如果有更好的方法來做到這一點,我想你會與我分享。 – 2014-12-05 18:47:35
污染全局範圍在Python中被忽視。您可能應該將實例存儲在字典中。 – 2014-12-05 18:50:26