我是 Python 中 OOP 的新手,正在研究继承概念。我遇到了以下代码:
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)
我想知道为什么我们要使用 self.all_contacts.append(self)
以及 for contact in self
是如何工作的?如果我理解正确,self
指定一个类(对象)的实例,并且附加到一个列表对我来说不是微不足道的。
最佳答案
all_contacts
是一个类变量——它对类是唯一的,而不是对每个实例都是唯一的。可以使用 Contact.all_contacts
访问它。每当您创建新联系人时,它都会附加到此所有联系人列表中。
ContactList
继承自 list
,因此 for contact in self
与 for i in [1,2, 3]
-- 它将遍历它包含的所有项目。它与 list
唯一不同的是实现了一个新方法,search
。
关于python - append(self) 在 Python 类中是什么意思?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51105738/