首页 > 解决方案 > python,从另一个类调用方法

问题描述

我试图sum_method从我的评估类调用函数到我的主要函数,但是我遇到了很多错误。我想将用作我的函数new_data的数据参数。sum_method

评价类:

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)

主类:

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()

标签: pythonclassobjectoopmethods

解决方案


我建议对这两个类进行一些更改,以将 .data 成员变量封装在基类中。我的偏好还是将计算与显示分开,因此将所有打印语句保留在 call_sum() 函数中。

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)

推荐阅读