首页 > 解决方案 > 列表理解函数指针Python

问题描述

我有一个定义属性(self.b)的方法(dosomething)。下面的虚拟代码:

class foo:
    def __init__(self):
        self.a = 1
    def dosomething(self, i):
        self.b = 2 * self.a + i
        return self.b ** 2 
testobj = foo()

属性 a 可以改变 - 因此在给定 a 的当前值的情况下调用 dosomething 来确定 b。

我想写一个像下面这样的列表理解。除了,我需要调用 dosomething 来改变 b 。下面的虚拟代码只会重复 self.b 的当前值 20 次。

[testobj.b for i in range(20)] # pass i to dosomething then store self.b

快速的方法是只返回 self.b 但是,return 语句专注于另一个更复杂的值。如果我可以返回 self.b,那么以下语句将起作用:

[testobj.dosomething(i) for i in range(20)]

属性 b 只是我想要访问的中间值。是否有针对这种情况的单行列表理解?我正在考虑在返回 self.b 的方法中定义一个函数,但是我不确定如何正确访问它。所以像 foo().dosomething(1).getb() 这样的东西不会起作用,因为 dosomething(1) 评估为一个数字。

class foo:
    def __init__(self):
        self.a = 1
    def dosomething(self, i):
        self.b = 2 * self.a + i
        def getb():
            return self.b
        return self.b ** 2 

我想我还应该补充一点,我不想返回不同值的数据结构。它会影响我在其他地方的大部分代码。

标签: pythonfunctionoopmethodslist-comprehension

解决方案


对于列表推导来说,这不是一个好的用例。


推荐阅读