Python 如何从一个方法内部调用另一个方法

标签 python oop scipy

我是一个新的 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/

相关文章:

python - 在线性搜索上推导算法效率

python - 使用 Python ElementTree 迭代多个(父,子)节点

函数的 Python 变量参数

scipy - 即使是正弦波,curve_fit 也会失败

python - 如何根据前 N 行计算 Pandas 数据框列的斜率

python - 检查变量是字符串类型还是整数类型

javascript - JS 模块模式和调用另一个函数

java - 为什么我不能为方法返回的对象引用赋值?

php - ZF2 - 如何使用 Hydrator/exchangeArray() 填充嵌套对象

python - 如何对缩放回归模型执行约束优化?