[英]python, calling a method from another class
I am trying to call the sum_method
function from my evaluation class to my main one, however I run into many errors.我正在尝试将我的评估 class 中的sum_method
function 调用到我的主要方法,但是我遇到了很多错误。 I want to use the new_data
as the data parameter of my sum_method
function.我想使用new_data
作为我的sum_method
function 的数据参数。
evaluation class:评估 class:
class evaluation():
def __init__(self, data):
self.data = data
def sum_method(self):
montant_init = self.data.loc[self.data['Initiateur'] == 'Glovoapp', 'Montant (centimes)'].sum()
print(montant_init)
main class:主要 class:
class main(evaluation):
new_data.to_csv("transactions.csv", index=False)
self.data = new_data
def call_sum(self, new_data):
init_eval = evaluation.sum_method(self=new_data)
print(init_eval)
init_evalobj = main()
init_evalobj.call_sum()
if you use the method in your inherence class just use self
如果您在您的固有 class 中使用该方法,只需使用self
so:所以:
init_eval = self.sum_method()
the self argument is passed in python automaticly as first parameter self 参数作为第一个参数自动传入 python
update you also should return a value:更新您还应该返回一个值:
def sum_method(self):
montant_init = self.data.loc[self.data['Initiateur'] == 'Glovoapp', 'Montant (centimes)'].sum()
print(montant_init)
return montant_init
I'd suggest making some changes to the both classes, to encapsulate the.data member variable in the base class.我建议对这两个类进行一些更改,以将.data 成员变量封装在基础 class 中。 My preference would also be to separate out the calculation from the display, so leave all the print statements in the call_sum() function.我的偏好也是将计算与显示分开,因此将所有打印语句留在 call_sum() function 中。
class evaluation:
def __init__(self, data):
self.data = data
def sum_method(self):
montant_init = self.data.loc[self.data['Initiateur'] == 'Glovoapp', 'Montant (centimes)'].sum()
return montant_init
class main(evaluation):
def __init__(self):
# Reduce csv content to what's needed for analysis
data_csv = pd.read_csv('transactions.csv')
# --> removing unnecessary data
new_data = data_csv[['Opération', 'Initiateur', 'Montant (centimes)', 'Monnaie',
'Date', 'Résultat', 'Compte marchand', 'Adresse IP Acheteur', 'Marque de carte']]
# --> saving changes...
new_data.to_csv("transactions.csv", index=False)
super().__init__(new_data) //Initialize the base class
def call_sum(self):
print('Glovoapp "montant" generated')
init_eval = self.sum_method() //Call the method from the base class
print(init_eval)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.