最近在使用python开发的过程中,想要实现通过字符串实现对函数的访问。在网上搜了一些方法,发现都不够简洁。最终笔者通过python内置的getattr方法,实现了这个功能,方法非常简单,在这里分享一下。
首先是对getattr方法的简单介绍
getattr() 函数用于返回一个对象属性值。
getattr 语法:
getattr(object, name[, default])
返回对象属性值。
以下实例展示了 getattr 的使用方法:
>>>class A(object):
... bar = 1
...
>>> a = A()
>>> getattr(a, 'bar') # 获取属性 bar 值
1
>>> getattr(a, 'bar2') # 属性 bar2 不存在,触发异常
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
AttributeError: 'A' object has no attribute 'bar2'
>>> getattr(a, 'bar2', 3) # 属性 bar2 不存在,但设置了默认值
3
>>>
import main as this
def add(a,b):
c = a + b
return c
if __name__ == "__main__":
out = getattr(this,"add")(1,2)
print(out)
笔者看法,字符串相较于函数更容易传递,比如我们可以轻松地通过命令行参数或者常量在不同脚本中传递。