Ну, в основном вы создаете список Contact
и добавляете self
, добавляете текущий контакт в список all_contacts
.
Теперь на ваши вопросы,
Мне интересно, почему мы используем self.all_contacts.append (self)
Мы бы использовали это, потому что all_contacts
является переменной класса, что означает, что список будет общим для всех Contact
экземпляров.
как for contact in self
работает?
Ну, как вы сказали, поскольку self
представляет текущий экземпляр, вызов for contact in self
позволяет вам выполнять итерацию в текущем списке контактов.
Другими словами, ваш пример кода позволяет вам создать экземпляр Contact
, который автоматически добавляется в переменную класса (shared). Теперь, предоставляя класс ContactList
, который наследуется от list
, они позволяют вам использовать реализованный метод search
, который вернет вам другой список Contact
на основе вашего поискового фильтра.