【问题标题】:Python: Passing an object instance from one function to another?Python:将对象实例从一个函数传递到另一个函数?
【发布时间】:2019-11-18 07:47:07
【问题描述】:

我在将值从一个脚本传递到另一个脚本时遇到了麻烦,我试图一次迈出一步,但大局是将值 obj1.get_predval 打印到我的 Django 视图并等待用户输入。

active_learner.obj1.get_predval 在我的 beta.py 脚本中不起作用,它只是打印出有意义的初始值,因为它没有运行 main.py 但我不确定如何传递 @ 的值987654323@ 来自 main.py。它在 main.py 脚本中正确输出obj1.get_predval

我假设我有一个根本的误解,现在,我试图返回的只是函数beta.pyobj1.get_predval 的值,当它到达行返回值并等待用户输入时继续。

main.py 下面的脚本

obj1 = MachinePred()
def main():
    model = load_model('model_new.h5')
    DATAFILE = "c_user_model_data100000.csv"
    dataset = loadtxt(DATAFILE, delimiter=",")
    X_pool, Y = dataset[:, 0:5], dataset[:, 5:]
    sc_x, sc_y = StandardScaler(), StandardScaler()
    X_pool, Y = sc_x.fit_transform(X_pool), sc_y.fit_transform(Y)

    learner = ActiveLearner(
        estimator = model,   
        query_strategy = uncertainty_sampling
    )

    for i in range(3):
        query_idx, query_inst = learner.query(X_pool)
        print("The machine queried:\n{}\nat index {}".format(
            sc_x.inverse_transform(query_inst),
            query_idx
            )
        )

        machine_prediction = learner.predict(X_pool[query_idx])
        obj1.set_predval(machine_prediction)
        print("predvalue:", (obj1.get_predval()))
        ratings = []
        cc_factor = ["delay", "speed", "missing_words", "paraphrasing"]
        for f in cc_factor:
            user_answer = input("How would you rate the quality of {} between [1-5]: ".format(f))
            ratings.append(user_answer)
        print(ratings, np.array([ratings]).reshape(1,-1))

if __name__ == '__main__':
    main()

beta.py 这是我试图将值传递给下面的脚本

import active_learner
print(A is: ", active_learner.obj1.get_predval)

mac.py 使用下面的 get 和 set 方法的简单 python 脚本。

class MachinePred:
    predval = 0  # Default value of the 'x' configuration setting

    def __init__(self):
        self.predval = 0

    def set_predval(self, val):
        self.predval = val

    def get_predval(self):
        return self.predval

【问题讨论】:

    标签: python django function class oop


    【解决方案1】:

    所以解决方案非常简单,据我了解,可以使用基于生成器的协程或将其拆分为类中的两个函数并使用 OO 设计来完成。协程方法将使用“yield”,这将强制退出返回值的函数,然后重新进入函数,但这会限制您使用基于非生成器的协程的能力,而我确实需要等待来自前端的输入。

    虽然您可以使用类,但您可以将活动学习器模型和数据放入“init 方法”,然后在返回值后从machine_prediction = learner.predict(X_pool[query_idx]) 拆分为第一个函数,并在第二个功能。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-07-29
      • 2013-03-15
      • 1970-01-01
      • 1970-01-01
      • 2014-04-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多