1
我試圖存儲一個文件,它對一個類的id進行編碼,讀取文件並調用該類,以便在數據將被存儲的文件中 - > 像基於文件輸入從文件和instanciate新類讀取
id_class:(arguments)
比讀文件會從文件列表中查找正確的類來invoque並傳遞參數。
是這樣的:
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
python的魔力!它工作...但爲什麼? – Pella86
那裏,我只是解釋了變化:) –
謝謝你,我問自己如何instanciate一個新的對象;) – Pella86