1
我在SuperTest.py超類創建一個類:
class SuperTest():
def func(self):
return Test2()
而且test.py
from SuperTest import *
class Test(SuperTest):
def create(self):
return self.func()
class Test2(SuperTest):
pass
test = Test()
print test.create()
然後我有一個錯誤NameError: global name 'Test2' is not defined
。
有沒有可能這樣做?如何處理範圍?據我所知,我不能相互遞歸地導入類。
我將在超類功能中獲得一些類名。動態創建類是很重要的。
您不能導入的東西「遞歸」,這意味着一個子模塊無法使用類/函數從「主程序」。你將不得不在'SuperTest.py'中測試'import Test2',否則它不會知道'test2'。在'test.py'中,你也可以執行'builtins .__ dict __ ['Test2'] = Test2' - **注意這不是你應該做的事情**(這將使Test2「真正地全局化」:) – Torxed
在SuperTest.py中定義'Test2'。 –
我想在字符串中獲取一些類名並動態創建它們,例如當調用子類create方法時,eval('Test2')或eval('Test3')等等(還有很多)。有沒有解決方法? – Nakamura