函数如何调用同一类python中的其他函数

2024-04-20 14:06:50 发布

您现在位置:Python中文网/ 问答频道 /正文

我想创建一个包含一些函数的类,其中一个函数在类中调用另一个函数,类似于:

import pandas as pd


class Prep:
    def __init__(self, data):
        self.data = data

    def slicing(self):
        sliceInput = self.data.iloc[:, 1:8]
        sliceTarget = self.data.iloc[:, 8]
        return sliceInput, sliceTarget

    def convert(self):
        convertInput = sliceInput.to_numpy(float)
        convertTarget = sliceTarget.to_numpy(int)
        return convertInput, convertTarget

if __name__ == "__main__":
    data_frame = pd.read_csv('data_manual.csv', sep=';')

    tes = Prep(data_frame)
    print(tes.convert())

我犯了这样的错误 NameError: name 'sliceInput' is not defined

如何在函数中调用convertInputconvertTarget 为什么我会出错,我一点也不明白。你知道吗


Tags: to函数selfnumpyconvertdatareturndef
2条回答

您需要在covert中添加sliceInput, sliceTarget = self.slicing()

import pandas as pd


class Prep:
    def __init__(self, data):
        self.data = data

    def slicing(self):
        sliceInput = self.data.iloc[:, 1:8]
        sliceTarget = self.data.iloc[:, 8]

        return sliceInput, sliceTarget

    def convert(self):
        sliceInput, sliceTarget = self.slicing()
        convertInput = sliceInput.to_numpy(float)
        convertTarget = sliceTarget.to_numpy(int)
        return convertInput, convertTarget

if __name__ == "__main__":
    data_frame = pd.read_csv('data_manual.csv', sep=';')

    tes = Prep(data_frame)
    print(tes.convert())

只需将self添加到定义的属性中。 另外,由于在实例化Prep对象之后data是不可变的,因此如果只在__init__()方法中初始化一次slice变量,性能会更好。你知道吗

import pandas as pd


class Prep:
    def __init__(self, data):
        self.data = data
        self.sliceInput = data.iloc[:, 1:8]
        self.sliceTarget = data.iloc[:, 8]

    def slicing(self):
        return self.sliceInput, self.sliceTarget


    def convert(self):
        convertInput = self.sliceInput.to_numpy(float)
        convertTarget = self.sliceTarget.to_numpy(int)
        return convertInput, convertTarget

if __name__ == "__main__":
    data_frame = pd.read_csv('data_manual.csv', sep=';')

    tes = Prep(data_frame)
    print(tes.convert())

相关问题 更多 >