假设我有一些课程:
class A:
def __init__(self, a=1, b=2, c=3):
self.a = a
self.b = b
self.c = c
我希望能够通过将一个可迭代的属性名称传递给某个函数来从该类的实例访问多个属性:
def access_attr(attrs, obj=A()):
return {a: eval('obj.{}'.format(a)) for a in attrs}
access_attr(attrs=['a', 'b'])
# returns {'a': 1, 'b': 2}
我不知道使用eval
是否是最好的方法?是否有规范的方法来完成这项任务?