我正在从事工程仿真,并以此为借口学习面向对象的编程(更加熟悉过程和函数式编程)。我想知道如何更新对象的属性,然后以一种可以与例如列表理解结合使用的方式对其调用方法。如果我有一个带有属性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
或列表理解?这是我的代码中非常常见的模式,那么这可能只是设计缺陷吗?
感谢您的时间。
答案 0 :(得分:0)
使用列表理解的解决方案:
accumulator = [myFoo.somemethod() for myFoo.attrib in attribValues]