[英]Python: Passing an object instance from one function to another?
我在将值从一个脚本传递到另一个脚本时遇到问题,试图一次迈出一步,但大局是将值obj1.get_predval
打印到我的 Django 视图并等待用户的输入。
我的active_learner.obj1.get_predval
脚本中的 active_learner.obj1.get_predval 不起作用,它只是打印出有意义的初始值,因为它没有运行 main.py,但我不确定如何传递obj1.set_predval(machine_prediction)
来自 main.py 的obj1.set_predval(machine_prediction)
。 它在 main.py 脚本中正确输出obj1.get_predval
。
我假设我有一个根本的误解,现在,我试图返回的是obj1.get_predval
中beta.py
的值,当它到达行返回值并等待用户输入然后继续。
下面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
因此,解决方案非常简单,据我了解,可以使用基于生成器的协程或将其拆分为 class 内的两个函数并使用 OO 设计来完成。 协程方法将使用“yield”,这将强制退出 function 返回值,然后重新输入 function 但这会限制您使用基于非生成器的协程的能力,我确实需要等待来自前端的输入。
Using a class though you could put the active learner model and data in an " init method" then split from the machine_prediction = learner.predict(X_pool[query_idx])
for the first function after returning the values and perform the rest in a second function .
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.