首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在Python类中追加(Self)意味着什么?

在Python类中追加(Self)意味着什么?
EN

Stack Overflow用户
提问于 2018-06-29 16:09:34
回答 3查看 10.1K关注 0票数 4

我不熟悉Python中的面向对象程序设计( OOP ),并致力于继承概念。我偶然发现了以下代码:

代码语言:javascript
运行
复制
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将指定到类(对象)的实例,并将其附加到列表中,这对我来说并不简单。

EN

Stack Overflow用户

回答已采纳

发布于 2018-06-29 16:12:40

基本上,您创建了一个Contact列表,并在self后添加了all_contacts列表中的当前联系人。

关于你们的问题,

我想知道为什么我们要使用self.all_contacts.append(self)

我们使用它是因为all_contacts是一个类变量,这意味着列表将在所有Contact实例之间共享。

for contact in self是如何工作的?

正如您所说的,由于self表示当前实例,调用for contact in self允许您在当前联系人列表上进行迭代。

换句话说,您的代码示例允许您创建附加在类变量(shared)中的Contact实例。现在,通过提供继承自ContactListlist类,它们允许您使用已实现的search方法,该方法将根据搜索筛选器返回另一个Contact列表。

票数 4
EN
查看全部 3 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51105738

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档