-5
我試圖通過dir()提取類名並通過for循環中的變量名實時創建它們的實例。我如何使python將'item'解釋爲變量名稱而不是'不存在'的類名稱。在for循環中創建一個實例
>>> class cls1():
... def __init__(self):
... self.speak = 'say cls1'
... def replay(self):
... print self.speak
...
>>> for item in dir():
... if item[:2] != '__':
... print 'item = ', item
... x = item()
... x.reply()
...
item = cls1
Traceback (most recent call last):
File "<stdin>", line 4, in <module>
TypeError: 'str' object is not callable
想問你一個問題,然後......在Python中沒有一種方法來評估字符串類名。也許通過評估?換句話說,我認爲這個字符串可以與類名匹配,然後自動轉換爲引用。謝謝 – Kris
@Kris:'eval'只能作爲最後的手段。 'globals()'字典給你一個從字符串值到對象的直接映射。如果你所擁有的只是變量'name'中的一個字符串名,那麼'globals()[name]'會給你這個對象。 –
謝謝。只是爲了澄清 - 你的例子在上面工作,一切都很好。只是想知道如何做到這一點的替代方案(和不太理想的方法)。再次感謝。 – Kris