2012-06-12 3 views
0

В приведенном ниже коде мне нужно распечатать объект списка контактов .. Как это сделать?Python печать объекта

# Test.py 
class ContactList(list): 
    def search(self, name): 
     '''Return all contacts that contain the search value 
     in their name.''' 
     matching_contacts = [] 
     for contact in self: 
      if name in contact.name: 
       matching_contacts.append(contact) 
     return matching_contacts 


class Contact: 
    all_contacts = ContactList() 

    def __init__(self, name, email): 
     self.name = name 
     self.email = email 
     self.all_contacts.append(self) 

Я создал 2 объекта Контакта, но хотят, чтобы увидеть все элементы в списке all_contacts ..

ответ

1

Как насчет:

print(Contact.all_contacts) 

или:

for c in Contact.all_contacts: 
    print("Look, a contact:", c) 

Чтобы контролировать, как печать контактов, вам необходимо определить метод __str__ или __repr__ на контакте класс:

def __repr__(self): 
    return "<Contact: %r %r>" % (self.name, self.email) 

или, как бы вы хотели бы представить Контакт.

+0

Вот как это выглядит ... >>> для с в c1.all_contacts: ... печать (с) ... <__ main__.Contact например, при 0x00B56AA8> – user1050619

+0

@ user1050619: Да, то есть выводится методом '__repr__' по умолчанию для вашего объекта. Вы хотите переопределить метод '__repr__' по умолчанию с новым, который печатает, как вы хотите. –

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