繁体   English   中英

每次在python中调用函数时都会创建一个新对象

[英]Creating a new object every time you call a function in python

我有一个需要训练的推荐系统,我将整个训练过程包含在一个函数中:

def train_model(data):
  model = Recommender() 
  Recommender.train(data)
  pred = Recommender.predict(data)
  return pred

像这样的东西。 现在,如果我想在循环中针对不同的数据集进行训练,例如:

preds_list = []
data_list = [dataset1, dataset2, dataset3...]
for data_subset in data_list:
  preds = train_model(data_subset)
  preds_list += [preds]

我如何确保每次调用train_model函数时,都会创建一个全新的推荐实例,而不是旧的,并在之前的数据集上训练?

每次执行train_model您已经在创建一个新实例。 你没有使用新实例的东西。 你可能的意思是:

def train_model(data):
  model = Recommender() 
  model.train(data)
  pred = model.predict(data)
  return pred

使用您实例化的实例,而不是类

    class Recommender:
        def __init__(self):
            self.id = self

        def train(self, data):
            return data

        def predict(self, data):
            return data + str(self.id)


    def train_model(data):
      model = Recommender() 
      model.train(data)
      return model.predict(data)

    data = 'a data '
    x = {}
    for i in range(3):
        x[i] = train_model(data)
        print(x[i])

    # a data <__main__.Recommender object at 0x11cefcd10>
    # a data <__main__.Recommender object at 0x11e0471d0>
    # a data <__main__.Recommender object at 0x11a064d50>

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM