Указатель функции понимания списка Python - PullRequest
0 голосов
/ 21 апреля 2020

У меня есть метод (dosomething), который определяет атрибут (self.b). Фиктивный код ниже:

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 может измениться - поэтому вызывается dosomething для определения b с учетом текущего значения a.

Я хочу написать понимание списка, как показано ниже. За исключением того, что мне нужно позвонить 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 

Полагаю, мне следует добавить, что я не хочу возвращать структуру данных с разными значениями. Это повлияло бы на большую часть моего кода в другом месте.

1 Ответ

0 голосов
/ 21 апреля 2020

Не очень хороший вариант использования для понимания списка.

...