Python搜索自定义类:__包含__和__iter__
示例
为了允许使用infor自定义类,该类必须提供magic方法__contains__或失败的__iter__-method方法。
假设您有一个包含的list的类list:
class ListList:
def __init__(self, value):
self.value= value
#创建一组所有值以进行快速访问
self.setofvalues= set(item for sublist inself.valuefor item in sublist)
def __iter__(self):
print('Using __iter__.')
#所有子列表元素的生成器
return (item for sublist inself.valuefor item in sublist)
def __contains__(self, value):
print('Using __contains__.')
#只需查找值是否在集合中
return value in self.setofvalues
#即使没有设置,您也可以对包含检查使用iter方法:
#返回any(item==iter(self)中项目的值)可以使用以下方式进行成员资格测试in:
a = ListList([[1,1,1],[0,1,1],[1,5,1]]) 10 in a #假 #印刷品:使用__contains__。 5 in a #真正 #印刷品:使用__contains__。
即使删除__contains__方法后:
del ListList.__contains__ 5 in a #真正 #打印:使用__iter__。
注意:即使该类实现了方法,循环in(如中所述foriina)也将始终使用。__iter____contains__
热门推荐
1 泰迪狗狗如何训练
3 狗狗训练图
5 狗狗训练方法
6 训练狗狗不咬人
8 敏捷训练狗狗
10 训练狗狗吃饭
11 泰迪狗狗训练
12 狗狗从多大开始训练
13 狗狗训练学校费用
14 怎么去训练狗狗
15 狗狗训练狗狗
16 狗狗训练教程
17 训练狗狗装死
18 泰迪狗狗的训练方法