我在一个类中有两个方法。我想在另一个内部调用一个方法的变量。 这是我的代码:
#第一种方法:
def starter_loan_check(self):
#global total_offer,final_offer
#final_offer=[]
for i in self.overall_data:
if i[1]=='PS' and i[3] in conf.PS_State and i[5]>29:
if i[2]!='challengerTUFT':
for c in cutoff_config:
if i[3]==c['State'] and i[2]==c['challenger'] and i[4]<['CUTOFF3'] and i[4]>=['CUTOFF4']:
if i[7]>50:
global total_offer,final_offer
final_offer=[]
total_offer=[i for i in product(*[conf.i[3]['Loan_Amount'],conf.i[3]['Apr'],conf.i[3]['Term']])
#global total_offer,final_offer
#final_offer=[]
for t in total_offer:
if t[0]>min(i[3]['Loan_Amount']) and t[1] in i[3]['Apr'] and t[2] in i[3]['Term']:
final_offer.append(t)
elif t[0]>max(i[3]['Loan_Amount']) and t[1] in i[3]['Apr'] and t[2] in i[3]['Term']:
t[0]=max(i[3]['Loan_Amount'])
final_offer.append(t)
elif i[9]>75:
if t[0]>min(i[3]['Loan_Amount']) and t[1] in i[3]['Apr'] and t[2] in i[3]['Term']:
final_offer.append(t)
elif t[0]>max(i[3]['Loan_Amount']) and t[1] in i[3]['Apr'] and t[2] in i[3]['Term']:
t[0]=max(i[3]['Loan_Amount'])
final_offer.append(t)
我正在尝试在此处访问final_offer 第二种方法:
def starter_loan_logic(self):
for i in self.query1_data:
for j in final_offer:
if j[0]/(i[3]*.85)>.30:#LTI Check
final_offer.remove(j)
if i[2]==j[0] and i[4]=='BI_WEEKLY':
PTI=i[5]/((i[3]*0.85)/12)>0.20
final_offer.remove(j)
if i[2]==j[0] and i[4]=='TWICE_PER_MONTH':
PTI=i[6]/((i[3]*0.85)/12)>0.20
final_offer.remove(j)
if i[2]==j[0] and i[4]=='MONTHLY':
PTI=i[7]/((i[3]*0.85)/12)>0.20
final_offer.remove(j)
for k in self.overall_data:
k['state']=='IL' and i[5]/((i[3]*0.85)/12)>0.225
final_offer.remove(j)
但是我在total_offer中的t处收到无效的语法错误 在这里,我尝试了Global,但是不确定是否正确使用了Global。 请帮助我了解如何在另一个函数中访问一个函数的变量。
答案 0 :(得分:1)
虽然可以使用不是推荐的方法来使用全局变量。
您要做的是将这些变量作为调用者设置的参数传递到函数中。因此第一种方法应类似于:
def starter_loan_check(self, total_offer):
final_offer = []
<< do loan check loop as above - but don't initialize final_offer in the loop>>
return final_offer
第二个循环如下所示:
def starter_loan_logic(self, final_offer):
<<do you loop here>>
无论何时调用这两个函数,都需要通过以下方式传递变量:
total_offer = <<something>>
final_offer = self.starter_loan_check(total_offer)
self.starter_loan_logic(final_offer)