You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何从另一个Python模块获取预测值?代码调用异常求助

问题解决:无法获取CalcSales类的预测结果

问题场景

有两个Python文件file_calling_class.py和file_with_class.py,前者需要获取后者CalcSales类中calculate_sales方法生成的prediction值。单独运行calculate_sales方法时结果正常,但跨文件传递budget值后,输出始终是self.prediction的初始值0。

用户代码

file_calling_class.py

import file_with_class

budget = 100

sales = file_with_class.CalcSales(budget=budget).__str__()
print('Your sales are: ' +sales)

file_with_class.py

import pickle
import pandas as pd

class CalcSales():
    def __init__(self, budget: int):
        self.budget = budget
        self.sales = 0
        self.prediction = 0

    def calculate_sales(self): 
        #budget = request.args.get('budget')
        print(self.budget) 
        budget = [int(self.budget)] 

        df = pd.DataFrame(budget, columns=['Marketing Budget']) 

        model = pickle.load(open('simple_linear_regression.pkl', 'rb'))

        prediction = model.predict(df) 

        self.prediction = int(prediction[0]) 

        # return(self.prediction)

    def __str__ (self):
        return (str(self.prediction))

输出结果

Your sales are: 0

原因分析

核心问题是:创建CalcSales实例后,从未调用过calculate_sales方法,self.prediction一直停留在__init__方法中初始化的0值,完全没有执行预测逻辑。

修复方案

提供两种可行的修复方式,根据实际需求选择:

方式一:手动调用预测方法(推荐,更灵活)

修改file_calling_class.py,先创建实例,再调用calculate_sales执行预测,最后输出结果:

import file_with_class

budget = 100

# 创建实例
sales_obj = file_with_class.CalcSales(budget=budget)
# 执行预测逻辑
sales_obj.calculate_sales()
# 输出结果
print('Your sales are: ' + str(sales_obj))

方式二:初始化时自动执行预测

修改file_with_class.py的__init__方法,在实例创建时自动调用calculate_sales,适合不需要延迟计算的场景:

import pickle
import pandas as pd

class CalcSales():
    def __init__(self, budget: int):
        self.budget = budget
        self.sales = 0
        self.prediction = 0
        # 初始化时自动执行预测
        self.calculate_sales()

    def calculate_sales(self): 
        print(self.budget) 
        budget = [int(self.budget)] 
        df = pd.DataFrame(budget, columns=['Marketing Budget']) 
        model = pickle.load(open('simple_linear_regression.pkl', 'rb'))
        prediction = model.predict(df) 
        self.prediction = int(prediction[0]) 

    def __str__ (self):
        return str(self.prediction)

验证结果

修改后运行file_calling_class.py,即可输出calculate_sales方法生成的正确预测值,而非初始的0。

内容的提问来源于stack exchange,提问作者Wupppa

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.26 08:15:40