如何在python中的每次调用时存储方法输出

时间:2017-11-20 21:08:38

标签: python decorator

鉴于课程:

class MyClass:
    def __init__(self):
        self.log = []
        return

    def fitness(self, x):
        return x*x

我希望能够将log属性存储到fitness方法的每个调用的输出中。为了得到以下内容:

my_obj = MyClass()

my_obj.fitness(3)
# Expected output 9
my_obj.fitness(6)
# Expected output 36

my_obj.log 
# Expected output [9, 36]

我在考虑一个方法装饰器,但我不知道如何将该属性作为参数传递。我需要将log属性嵌入到类中而不是外部变量中。 我正在使用python 3。

2 个答案:

答案 0 :(得分:1)

您不需要装饰器,只需编辑fitness方法即可修改对象log变量:

class MyClass:
    def __init__(self):
        self.log = []
        return

    def fitness(self, x):
        self.log.append(x*x)
        return x*x

答案 1 :(得分:0)

您需要做的是使用fitness方法直接修改log属性:

def fitness(self, x):
    self.log.append(x*x)