如何在python中存储每次调用时的方法输出
鉴于班级:如何在python中存储每次调用时的方法输出,python,decorator,Python,Decorator,鉴于班级: class MyClass: def __init__(self): self.log = [] return def fitness(self, x): return x*x 我希望能够将fitness方法每次调用的输出存储到log属性中。为了实现以下目标: my_obj = MyClass() my_obj.fitness(3) # Expected output 9 my_obj.fitness(6) # E
class MyClass:
def __init__(self):
self.log = []
return
def fitness(self, x):
return x*x
我希望能够将fitness
方法每次调用的输出存储到log
属性中。为了实现以下目标:
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。您不需要装饰器,只需编辑
fitness
方法来修改对象log
变量:
class MyClass:
def __init__(self):
self.log = []
return
def fitness(self, x):
self.log.append(x*x)
return x*x
您需要做的是让fitness方法直接修改log属性:
def fitness(self, x):
self.log.append(x*x)
并没有规定装饰器必须引用外部变量。这一定是一个重复的问题。返回之前,只需在fitness方法中添加
self.log.append(x*x)
?在fitness
中,将x*x
的结果存储在一个变量中,将该结果添加到日志中,然后返回。是否可以修改MyClass.fitness
?可能的重复