Я пытаюсь сохранить файл, который кодирует идентификатор класса, прочитать файл и вызвать класс так, чтобы -> в файлах данные сохранялись как
id_class:(arguments)
, чемread file будет искать из списка файлов нужный класс для вызова и передавать аргументы.
примерно так:
class foo:
id = 1
def __init__(self):
self.attr = 10
def __str__(self):
return str(self.attr)
class bar:
id = 2
def __init__(self):
self.attr = 20
def __str__(self):
return str(self.attr)
def create_foo():
return foo
def create_bar():
return bar
class_dict = {1:create_foo(),2:create_bar()}
class_index = [1,2,1,2,1,1,1,2,2,2,1] #data read from file
class_list = [] #output list containing the newly instanciated bar or foo
for index in class_index:
c = class_dict[index]
class_list.append(c)
но этот код добавляется в class_list, например, foo,но это только один класс, потому что если я изменю атрибут, он будет изменен во всем списке.
например:
for classe in class_list:
print classe,
print "\n-------------"
class_list[0].attr = 15
for classe in class_list:
print classe,
вывод:
10 20 10 20 10 10 10 20 20 20 10
-------------
15 20 15 20 15 15 15 20 20 20 15
и должно быть:
10 20 10 20 10 10 10 20 20 20 10
-------------
15 20 10 20 10 10 10 20 20 20 10