【发布时间】:2017-09-12 13:49:12
【问题描述】:
我正在学习面向对象的 python,遇到了这个问题,python 迫使我从内置的“list”类继承以使用 append 方法。
class ContactSearch(list): #Why inherit from 'list'?
def search(self, name):
matching_contact = []
for contact in self:
if name in contact.name:
matching_contact.append(contact)
return matching_contact
为什么我不能简单地声明一个空列表并附加到它?例如,它可以在以下代码中找到,而不是从“列表类”继承:
class Contact:
all_contacts = []
def __init__(self, name, email):
self.name = name
self.email = email
Contact.all_contacts.append(self)
【问题讨论】:
-
您希望
self是什么?您的班级是否存储数据?如果有,怎么做? -
抱歉,没听懂。我想了解的是,在这两个不同的类中,这两个有什么区别:matching_contact = [] 和 all_contacts = [] 不是都声明一个空列表吗?
-
问题出在
for contact in self:这行,这需要你编写的类支持迭代。当你从list继承时,你继承了list内置的迭代 -
谢谢,我觉得你回答得很好。
标签: python oop inheritance