2010-11-30 7 views
0

Не мог бы кто-нибудь объяснить мне, как создавать экземпляры класса из списка (или строку, которая может быть получена из excel). Я всегда сталкиваюсь с этой проблемой. Я хочу создать много экземпляров классов, а затем сохранить их в полке позже.Создание экземпляров класса

Этот образец кода не работает, но иллюстрирует подход, который я пытаюсь сделать.

class test: 
    def __init__(self): 
     self.a='name' 

if _name__=='__main__': 
    list=['A','B'] 
    for item in list: 
     item=test() 
+0

Когда вы вызываете «для i в seq:», i не является исходным объектом в seq, а копией к нему. Таким образом, ваш код не будет работать. – Kabie 2010-11-30 00:40:50

+2

Почему вы это пытаетесь? Где вы видели «класс», используемый как функция? В каком учебнике вы учите Python? – 2010-11-30 00:41:38

ответ

1

Немногие проблемы в вашем коде включают в себя именование переменных. Это может вас смутить.

class test: 
    # I guess you want to provide the name to initialize the object attribute 
    def __init__(self, name): 
     # self.name is the attribute where the name is stored. 
     # I prefer it to self.A 
     self.name = name   

Теперь проблема заключается в том, что экземпляр также является элементом вашего списка, который, как я полагаю, является именем.

if __name__=='__main__': 
    # I presume these are list of names 
    list_of_names = ['A','b','c'] 

    # You have to store your instance some where. 
    instance_list = [] 

    # Here name is an element of the list that you are iterating 
    # I change it to name instead of instance 
    for name in list_of_names: 
     # Here I am appending to the list, a test object that I create   
     instance_list.append(test(name)) 

[Edit:]

Теперь, я действительно не понимаю вас, почему этот кусок кода:

for item in list: 
     item=class() # How can you reassign the item ? 

Посмотрите, что этот пункт.

>>> for item in ['A', 'B']: 
...  print item 
... 
A 
B 
>>> 

Не следует назначать его item = ...., но вы должны использовать его .... = ..(item) !!!

Смежные вопросы