【发布时间】:2017-10-20 05:42:05
【问题描述】:
我有许多函数需要从各种导入的文件中调用。
函数的格式如下:
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)
【问题讨论】:
标签: python python-3.x getattr