我有一組類A
,B
,C
在「前端」包p1
。它們都從p1.X
繼承。python3:將字符串轉換爲
我有另一套類A
,B
,C
在「後端」包p2
。它們都從p2.Y
繼承。
在p1.X
,我設置一個後端,以便p1.A
使用p2.A
作爲後端,p1.B
使用p2.B
等這種映射是基於在一個繼承的方法類名來完成。
現在,我認爲有,例如,backend = "p2.A"
(字符串),但是當我嘗試評估這個,python不知道約p2
,即使這是更早導入。
我做錯了什麼?我應該在eval內導入嗎?應該像意大利麪代碼...你有更好的主意嗎?
謝謝。
PS:我目前在「父」 p1.X
類,這是可怕的是這樣的,但良好的澄清什麼,我想:
def getBackendClass(self):
myClass = ... # (class without package name)
if myClass == "A":
return p2.A
elif myClass == "B":
return p2.B
...
爲什麼不映射'{classname:class}',然後使用'getattr'來訪問方法? – jonrsharpe
感謝Jon,但我的目的是避免硬編碼。用你的榜樣,我應該有'{p1.A:p2.A,p2.B:p2.B,...}'(我有A,B,...等於或多或少30個不同的類別)。映射是系統化的(我使用vim腳本來編寫它...)。 –