python中self传值为什么我只能传一个,传第二个就报错?求大神给小弟解释一下

我在另一个文件调用a.baum_welchm( record,test,delta=0.001,max_iteration=float('inf'))时,record和test都是一个数组,但是record能传进去,test就传不进去,总是报错说我给delta传递了多个值TypeError: baum_welchm() got multiple values for argument 'delta'

def baum_welchm(self, os, test,delta=0.001,max_iteration=float('inf')):
        K=len(os)
        log_likelihood_prev = float('-inf')
        iteration_number = 0
        while True:
            logm=0
            for single_o in os:
                alpha, log_likelihood, scale = self.forward_with_scale(single_o)
                logm+=log_likelihood
            now_delta = logm - log_likelihood_prev
            if (now_delta <= delta) or (iteration_number >= max_iteration):
                break
            else:
                log_likelihood_prev = logm
                iteration_number += 1
                init_ho=self.ho.copy()
                #K个学生的 原本A 和 B 的中的分子分母在 多序列的更新公式中 需要累加,然后进行 加权平均,所有建立存放各分子分母的矩阵
                multi_pi= np.zeros((K, self.h), np.float)
                multi_A_numerator= np.zeros((K,self.h, self.h), np.float)
                multi_A_denominator= np.zeros((K,self.h, self.h), np.float)
                multi_B_numerator= np.zeros((K,self.h, self.o), np.float)
                multi_B_denominator= np.zeros((K,self.h, self.o), np.float)
                cishu=0
                for single_o in os:
                    os_length=len(single_o)
                    alpha, log_likelihood, scale = self.forward_with_scale(single_o)
                    beta = self.backward_with_scale(single_o, scale)
                    gamma = self.computer_gamma(os_length, alpha, beta)
                    xi = self.computer_xi(single_o, alpha, beta)
                    # 算出每一个学生的新的pi, 最后大for循环结束的时候,更新pi的值
                    for i in range(self.h):
                        multi_pi[cishu][i]=gamma[0][i]
                    #  算出A每一个学生的分子 分母,最后结束的时候累加,相除
                    for i in range(self.h):
                        denominator_A = 0.0
                        for t in range(os_length-1):
                            denominator_A += gamma[t][i]
                        #denominator_A

                        for j in range(self.h):
                            numerator_A = 0.0
                            for t in range(os_length-1):
                                numerator_A += xi[t][i][j]
                            #numerator_A*=1/math.exp(log_likelihood)
                            multi_A_numerator[cishu][i][j]=numerator_A*math.exp(log_likelihood)
                            multi_A_denominator[cishu][i][j]=denominator_A*math.exp(log_likelihood)

                        denominator_B = denominator_A + gamma[os_length-1][i]
                        for o in range(self.o):
                            numerator_B = 0.0
                            for t in range(os_length):
                                if single_o[t] == o:
                                    numerator_B += gamma[t][i]
                            multi_B_denominator[cishu][i][o]=denominator_B*math.exp(log_likelihood)
                            multi_B_numerator[cishu][i][o]=numerator_B*math.exp(log_likelihood)
                    cishu+=1
                for j in range(self.h):
                    self.pi[j]=sum(multi_pi[:,j])/K
                for i in range(self.h):
                    for j in range(self.h):
                        sum_fenzi=0
                        sum_fenmu=0
                        for k in range(K):
                            sum_fenzi+=multi_A_numerator[k][i][j]
                            sum_fenmu+=multi_A_denominator[k][i][j]
                        self.hh[i][j]=sum_fenzi/sum_fenmu
                for i in range(self.h):
                    for j in range(self.o):
                        sum_fenzi=0
                        sum_fenmu=0
                        for k in range(K):
                            sum_fenzi+=multi_B_numerator[k][i][j]
                            sum_fenmu+=multi_B_denominator[k][i][j]
                        self.ho[i][j]=sum_fenzi/sum_fenmu
                if self.ho[0][1]>0.5:
                    self.ho[0][0]=init_ho[0][0]
                    self.ho[0][1]=init_ho[0][1]
                if self.ho[1][0]>0.5:
                    self.ho[1][0]=init_ho[1][0]
                    self.ho[1][1]=init_ho[1][1]
            L0 = self.pi[1]
            T = self.hh[0][1]
            S = self.ho[1][0]
            F = self.hh[1][0]
            G = self.ho[0][1]
            predict_last_one = []
            predict_prob = []
            predict_right = []
            predict_wrong = []
            for single_o in os:
                real = single_o.copy()
                chushi = single_o.copy()
                chushi[0] = L0
                j = 0
                for i in single_o:
                    if i == 0:
                        # 实际的知识掌握程度
                        real[j] = S * L0 / (S * L0 + (1 - G) * (1 - L0))
                        # 经过学习后,下一次答题之前实际掌握知识的概率
                        if (j + 1) == len(single_o):
                            # 如果已经是最后一题了,就不用更新经过学习之后的状态了
                            break
                        else:
                            L0 = real[j] * (1 - F) + (1 - real[j]) * T
                            # theta[0]=L0
                            j += 1
                            chushi[j] = L0
                    else:
                        real[j] = (1 - S) * L0 / ((1 - S) * L0 + G * (1 - L0))
                        if (j + 1) == len(single_o):
                            break
                        else:
                            L0 = real[j] * (1 - F) + (1 - real[j]) * T
                            # theta[0]=L0
                            j += 1
                            chushi[j] = L0
                # 计算 最后一个要预测的初始pi
                L0 = real[len(real) - 1] * (1 - F) + (1 - real[len(real) - 1]) * T
                po = L0 * (1 - S) + (1 - L0) * G
                predict_prob.append(po)
                if (single_o[-1] == 1):
                    if po < 0.5:
                        predict_right.append(0)
                    else:
                        predict_right.append(1)
                if (single_o[-1] == 0):
                    if po > 0.5:
                        predict_wrong.append(0)
                    else:
                        predict_wrong.append(1)
                if po > 0.5:
                    predict_last_one.append(1)
                else:
                    predict_last_one.append(0)
                    # predict_last_one.append(po)
            print(predict_last_one)
            count = 0
            for i in range(len(test)):
                if test[i] == predict_last_one[i]:
                    count += 1
            accuracy = count / len(test)
            sum_mse = 0
            sum_mae = 0
            for i in range(len(test)):
                sum_mse += (test[i] - predict_prob[i]) * (test[i] - predict_prob[i])
                sum_mae += abs(test[i] - predict_prob[i])
            MSE = sum_mse / len(test)
            RMSE = MSE ** 0.5
            MAE = sum_mae / len(test)
            actual_prob = sum(predict_prob) / len(predict_prob)
            racc = sum(predict_right) / len(predict_right)
            wacc = sum(predict_wrong) / len(predict_wrong)
            print(racc,wacc)
        return logm,iteration_number

test里面是不是包含一个名称为delta的属性,如果是,尝试把参数delta改成别的名称