我刚刚开始使用泡菜,我正在尝试挑选我自己定义的一个类,这样我就可以在一个Flask应用程序中解开它。
这是我们班的代码:
class wma :
def __init__(self) : pass
def isConsistent(self, df, nConsecutive) :
sum = 0
for i in np.arange(1, nConsecutive + 1) :
sum += i
weights = []
for val in np.arange(1, nConsecutive + 1) :
weight = val / sum
weights.append(weight)
maxWMA = 0
for weight in weights :
maxWMA += weight
result = df[0].rolling(nConsecutive).apply(lambda x : np.sum(weights * x))
currentWMA = results.iloc[-1]
if currentWMA == maxWMA :
return True
else :
return False
我在试着腌制:
wma = wma()
file = open("wma", "wb")
pickle.dump(wma, file)
file.close()
但这给了我一个错误:
PicklingError: Can't pickle <class '__main__.wma'>: it's not the same object as __main__.wma
我刚开始泡菜,所以我不知道出了什么问题。有什么解决错误的建议吗?
发布于 2022-01-31 18:25:00
拥有同名类的类和实例通常是个坏主意,特别是在本例中。酸洗取决于全局范围中可用的类型名称,因此当它看到wma
是一个wma
类型的变量报告时(因为我们刚刚重写了它,它的名称就不存在了),它就会感到困惑。
只要将变量命名为任何其他变量,您就会没事的。
my_wma = wma()
file = open("wma", "wb")
pickle.dump(my_wma, file)
file.close()
https://stackoverflow.com/questions/70934954
复制相似问题