Python中的可组合属性更新

时间:2018-12-06 22:44:09

标签: python python-3.x iteration

我正在从事工程仿真,并以此为借口学习面向对象的编程(更加熟悉过程和函数式编程)。我想知道如何更新对象的属性,然后以一种可以与例如列表理解结合使用的方式对其调用方法。如果我有一个带有属性Foo的类Foo.attrib,我基本上想这样做:

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或列表理解?这是我的代码中非常常见的模式,那么这可能只是设计缺陷吗?

感谢您的时间。

1 个答案:

答案 0 :(得分:0)

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

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