提问者:小点点

将一个方法的返回值用作同一类中另一个方法的参数


我试图创建一个由几个方法组成的类,并且我想使用方法的返回值作为同一个类中其他方法的参数。 有没有可能这样做呢?

class Result_analysis():
    def __init__(self, confidence_interval):
        self.confidence_interval = confidence_interval

    def read_file(self, file_number):
        dict_ = {1: 'Ten_Runs_avg-throughput_scalar.csv',
                 2: 'Thirty_Runs_avg-throughput_scalar.csv',
                 3: 'Hundred_Runs_avg-throughput_scalar.csv',
                 4: 'Thousand_Runs_avg-throughput_scalar.csv'}
        cols = ['run', 'ber', 'timelimit', 'repetition', 'Module', 'Avg_Throughput']
        data = pd.read_csv(dict_[file_number], delimiter=',', skiprows=[0], names=cols)

        df = pd.DataFrame(data)
        return df

    def extract_arrays(self,df):
        avgTP_10s_arr = []
        avgTP_100s_arr = []
        avgTP_1000s_arr = []

        for i in range(len(data)):
            if (df['timelimit'][i] == 10):
                avgTP_10s_arr.append(df['Avg_Throughput'][i])
            elif (df['timelimit'][i] == 100):
                avgTP_100s_arr.append(df['Avg_Throughput'][i])
            elif (df['timelimit'][i] == 1000):
                avgTP_1000s_arr.append(df['Avg_Throughput'][i])
        return avgTP_10s_arr, avgTP_100s_arr, avgTP_1000s_arr

在上面的代码片段中,第二个方法使用第一个方法的返回值,但是当我运行这段代码时,它给我一个错误。


共2个答案

匿名用户

您没有包括您的所有代码,并且您应该使用跟踪更新问题,但是您的意思是这样的吗:

n = ...  # I don't know what n is.
d = Result_analysis(0.95)
print(d.extract_arrays(d.read_file(n))

匿名用户

如果您不想从类外显式调用函数read_file。 然后您可以将程序转换为:

class Result_analysis():
    def __init__(self, confidence_interval):
        self.confidence_interval = confidence_interval

    def read_file(self, file_number):
        dict_ = {1: 'Ten_Runs_avg-throughput_scalar.csv',
                 2: 'Thirty_Runs_avg-throughput_scalar.csv',
                 3: 'Hundred_Runs_avg-throughput_scalar.csv',
                 4: 'Thousand_Runs_avg-throughput_scalar.csv'}
        cols = ['run', 'ber', 'timelimit', 'repetition', 'Module', 'Avg_Throughput']
        data = pd.read_csv(dict_[file_number], delimiter=',', skiprows=[0], names=cols)

        df = pd.DataFrame(data)
        return df

    def extract_arrays(self,file_number):
        df = Result_analysis().read_file(file_number)
        avgTP_10s_arr = []
        avgTP_100s_arr = []
        avgTP_1000s_arr = []

        for i in range(len(data)):
            if (df['timelimit'][i] == 10):
                avgTP_10s_arr.append(df['Avg_Throughput'][i])
            elif (df['timelimit'][i] == 100):
                avgTP_100s_arr.append(df['Avg_Throughput'][i])
            elif (df['timelimit'][i] == 1000):
                avgTP_1000s_arr.append(df['Avg_Throughput'][i])
        return avgTP_10s_arr, avgTP_100s_arr, avgTP_1000s_arr

调用函数extract_arrays,并将file_number作为参数传递