2014-02-20 4 views
-2

Ниже приведен фрагмент кода. Я хочу, чтобы мое имя объекта было равно элементу [0]. Мои сценарии успешно генерируют объекты, но не могут «называть их», я не могу понять, почему.Почему мой экземпляр не имеет имени

master_inventory = [] 

def import_catalogue(): 
    with open("./catalogue.txt", "r") as raw_catalogue: 
     for page in raw_catalogue: 
      page = page.split('\r') 
      for line in page: 
       element = line.split('\t\t\t') 
       element[0] = Antique(element[0], element[1], element[2], element[3], element[4], element[5], element[6], element[7], element[8], element[9]) 
       master_inventory.append(element[0]) 


import_catalogue() 

print master_inventory[1] 

>>> <__main__.Antique instance at 0x10980f320> 

print master_inventory[1].sku 

>>> A00001 
+2

Реализовать [ '__str__'] (http://docs.python.org/2/reference/datamodel.html#object.__str__) на' Antique' класса. –

+0

Почему вы ожидаете, что ваши объекты будут иметь имена? Вы реализовали какую-либо такую ​​функциональность? – user2357112

+0

Хорошо, понял! Я новичок в этом, никогда раньше не встречался __str__. Благодаря! –

ответ

0

Вы должны осуществлять __str__ функции в Antique классе, так что вы выбираете, как вы хотите, чтобы отобразить имя вашего объекта. , например.:

class Antique(): 
    … 
    def __str__(self): 
     return "Antique({},{},{})".format(self.foo, self.bar, self.foobar) 
    … 
+2

Для этого я бы предпочел определить '__repr __()', однако. – glglgl

+0

Действительно, я не указал это в своем ответе, потому что '__repr __()' ссылается на документацию '__str __()'. – zmo

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