的對象是否有可能通過給它的名字,例如,以創建一個類的一個實例:過得去名稱
instance = "TestXYZ"()
假設TestXYZ由進口上面的代碼和TestXYZ被定義爲一類進口:
class TestXYZ(object):
...
的對象是否有可能通過給它的名字,例如,以創建一個類的一個實例:過得去名稱
instance = "TestXYZ"()
假設TestXYZ由進口上面的代碼和TestXYZ被定義爲一類進口:
class TestXYZ(object):
...
是的,這是可能的。機械師取決於你如何導入類:
klass = globals()['TestXYZ']
然後你就可以創建一個:
>>> globals()["TestXYZ"]()
<__main__.TestXYZ object at 0x10f491090>
或
>>> getattr(sys.modules["test_module"], "TestXYZ")()
<test_module.TestXYZ object at 0x10cf22090>
可以使用得到當前命名空間中的對象的引用該類的實例:
instance = klass()
我不知道爲什麼你要做到這一點,但不是使用globals()
我建議你在這裏創建一個字典:
class Foo:
pass
d = {'Foo':Foo}
ins = d['Foo']()
或移動類的一些其他模塊:
import some_module
ins = getattr(some_module, 'Foo')()
'getattr',請 – michaelmeyer
@doukremt謝謝! –
可以使用'globals()[「TestXYZ」]()',但你爲什麼要這樣做? –
因爲我不喜歡傳遞確切的類對象,但我知道名字。 –
你有什麼理由不想通過課程本身嗎? – lanzz