说我正在使用某些python包中的类,如下所示
class foo(object):
def __init__(self):
self.a = None
self.b = None
self.c = None
self.d = None
self.e = None
self.f = None
现在,我需要在某些操作中使用类foo的对象foobar的属性b,d和e,例如,调用一个函数qux:
print qux(foobar.b, foobar.d, foobar.e)
有什么方法可以创建此的简写版本,类似于以下想象的代码:
print qux(*foobar.[b,d,e])
注意约束:类和函数都不能更改.
解决方法:
好吧,getattr和setattr使您接近:
使用setattr进行分配(下一个工作不需要,仅在此处进行说明):
class foo(object):
def __init__(self):
for name in 'abcdef':
setattr(self, name, None)
在getattr中使用值:
print qux(*(getattr(foobar, name) for name in 'bde'))
对于更长的普通名称,您需要在[‘foo’,’bar’]中输入.