简体   繁体   English

python,从另一个 class 调用方法

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM