Python中的可组合属性更新



我正在进行工程模拟,并以此为借口学习面向对象编程(更熟悉过程和函数编程(。我想知道如何更新对象的属性,然后以一种可以用于例如列表理解的方式调用它的方法。如果我有一个属性为Foo.attrib的类Foo,我基本上想这样做:

myFoo = Foo(1)
attribValues = [1, 2, 3, 4, 5]
accumulator = []
for a in attribValues:
myFoo.attrib = a
accumulator.append(myFoo.someMethod) # depends on value of myFoo.attrib

有没有一种更具声明性的方法可以做到这一点,也许是我可以让这个模式与map或列表理解一起工作的某种方法?这是我代码中非常常见的模式,所以这可能只是一个设计缺陷吗?

谢谢你抽出时间。

使用列表理解的解决方案:

accumulator = [myFoo.somemethod() for myFoo.attrib in attribValues]

最新更新