Python 3.x Python3:对于类类型,调用in时会发生什么?

Python 3.x Python3:对于类类型,调用in时会发生什么?,python-3.x,Python 3.x,如果我有一个定义了uu getitem的类 c = MyClass() x in c 显示为使用所有值y,0迭代调用c.。\uuuu getitem\uuuu。您应该定义一个 __contains__() 方法Python为成员资格测试操作符优先考虑\uuuu contains()。因此,更好的方法是重写\uuuu contains\uuu()方法 从 对于未定义\uuuu包含

如果我有一个定义了uu getitem的类

c = MyClass()
x in c
显示为使用所有值y,0迭代调用c.。\uuuu getitem\uuuu。您应该定义一个

 __contains__() 

方法

Python为成员资格测试操作符优先考虑
\uuuu contains()。因此,更好的方法是重写
\uuuu contains\uuu()
方法

对于未定义
\uuuu包含
的对象,成员资格测试 首先通过
\uu iter\uu()
尝试迭代,然后是旧序列迭代 协议通过
\uuuu getitem\uuuuuu()


如果要编写这样的类,我建议从中的一个类继承。它可以为您节省大量输入,并有助于确保您的类与
list
/
dict
/
set
或任何您试图模拟的对象兼容。
 __contains__()