python - append(self) 在 Python 类中是什么意思?

标签 python class object self

我是 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 selffor i in [1,2, 3] -- 它将遍历它包含的所有项目。它与 list 唯一不同的是实现了一个新方法,search

关于python - append(self) 在 Python 类中是什么意思?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51105738/

相关文章:

python - 如何在 Python 中为每个 x 数组值插入具有唯一 y 数组的 2D 数据?

python - 如何在 Python 中格式化我对 Spotify Web API 的 GET 请求?

C++ 输出对象中的所有成员

python - 所有类方法中的类变量访问

VBA:从函数返回 Range.Find() 结果

python - OWASP ZAP python API错误运行脚本

Python Pandas : Compute Mean, 标准偏差,并计算导入数据集的缺失值

python - 为什么要修改类属性?

java - Java ArrayList中的对象不会更新

Java性能: private static final String vs local String ?堆空间中创建的对象数量