我是一个新的 OOP。我已经编写了以下类和方法,并且想要从另一个方法内部调用一个方法。但是,我收到一条错误消息,指出名称多项式(方法)未定义。有什么想法吗?
#Imports
import numpy as np
from scipy.signal import argrelextrema
from scipy import optimize
class MaxImpact():
def __init__(self,X,Y):
self.X = X
self.Y = Y
self.minima_index = argrelextrema(self.Y,np.less)
self.maxima_index = argrelextrema(self.Y,np.greater)
self.approx_converge_pt = []
self.approx_converge_idx = []
# .... (bunch of other methods)
def calc_convergePt_X(self):
for i in range(1,len(self.Y)):
if (self.Y[i-1] < 0 and self.Y[i] > 0) or (self.Y[i-1] > 0 and self.Y[i] < 0):
self.approx_converge_idx.append(i-1)
for i in self.approx_converge_idx:
self.x_val = self.X[i]
return(self.x_val)
def polynomial(self):
func = clf4.intercept_[0] + clf4.coef_[0][1] * self.X + clf4.coef_[0][2]*np.power(self.X,2) + clf4.coef_[0][3]*np.power(self.X,3) + clf4.coef_[0][4]*np.power(self.X,4)
def neutral_state(self):
sol = optimize.root(polynomial(),self.x_val)
maxImp2 = MaxImpact(XX,YY4)
print(maxImp2.calc_convergePt_X())
print(maxImp2.neutral_state())
这里我想调用多项式方法,其中包含中性状态方法中的多项式eq。我最终得到错误“名称多项式未定义”
最佳答案
必须在实例上调用方法。要在同一实例上调用方法,请使用 self
引用它:
def neutral_state(self):
sol = optimize.root(self.polynomial(), self.x_val)
关于Python 如何从一个方法内部调用另一个方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58928908/