我有許多函數需要從各種導入的文件中調用。如何將字符串作爲對象傳遞給getattr python
功能沿此線格式化:
a.foo
b.foo2
a.bar.foo4
a.c.d.foo5
,他們在傳遞給我的腳本作爲原始字符串。
我正在尋找一個乾淨的方式來運行這些,帶參數,並得到返回值
現在我有分割字符串然後將其輸送到正確的GETATTR調用一個混亂的制度,但這種感覺有點笨拙,非常不可擴展。有沒有一種方法可以將getattr的對象部分作爲字符串傳遞?還是以其他方式做到這一點?
import a, b, a.bar, a.c.d
if "." in raw_script:
split_script = raw_script.split(".")
if 'a' in raw_script:
if 'a.bar' in raw_script:
out = getattr(a.bar, split_script[-1])(args)
if 'a.c.d' in raw_script:
out = getattr(a.c.d, split_script[-1])(args)
else:
out = getattr(a, split_script[-1])(args)
elif 'b' in raw_script:
out = getattr(b, split_script[-1])(args)