2014-10-17 4 views
0

Это может иметь простой ответ. У меня есть класс, который выглядит следующим образом:Создать экземпляр класса «на лету»

class Solution(object): 
    s_list = [] 
    def add_number(self, number): 
     self.s_list.append(number) 

и код:

chain_1 = [0,1,4] 
chain_2 = [2,5,6] 
solutions = [] 

for x in chain_1: 
    solution = Solution() 
    solution.add_number(x) 
    for y in chain_2: 
     if x < y: 
      solution.add_number(y) 
      solutions.append(solution) 
      break 

Это, конечно, обновляет и тот же экземпляр решения каждый раз, что мне нужно 3 различных экземпляров «Solutions»:

sol1.s_list = [0,2] 

sol2.s_list = [1,2] 

sol3.s_list = [4,5] 

, но я получаю:

sol.s_list = [0,2,1,2,4,5] 

Примечание: Это часть более крупной проблемы, число «цепей» является переменной.

+0

Make 's_list' переменную экземпляра вместо переменной класса. – WKPlus

ответ

2

Вам просто нужно сделать s_list экземпляр переменной вместо переменной класса:

class Solution(object): 
    def __init__(self): 
     self.s_list = [] 

    def add_number(self, number): 
     self.s_list.append(number)