覆盖Python的“in”操作员?
如果我在 Python 中创建自己的类,我应该定义什么函数才能允许使用 in
运算符,例如
class MyClass(object):
...
m = MyClass()
if 54 in m:
...
另请参阅 __contains__ 是做什么的,什么可以调用 __contains__ 函数,针对有关 __contains__
做什么的相应问题。
If I am creating my own class in Python, what function should I define so as to allow the use of the in
operator, e.g.
class MyClass(object):
...
m = MyClass()
if 54 in m:
...
See also What does __contains__ do, what can call __contains__ function for the corresponding question about what __contains__
does.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
MyClass.__contains__(self, item)
MyClass.__contains__(self, item)
更完整的答案是:
在这里,当询问 54 是否在
m
中时,您会得到True
:请参阅 有关重载
__contains__
的文档。A more complete answer is:
Here you would get
True
when asking if 54 was inm
:See documentation on overloading
__contains__
.拥有所需逻辑的另一种方法是实现
__iter__
。如果你没有重载 __contains__ python 会使用 __iter__ (如果它重载了)来检查你的数据结构是否包含指定的值。
Another way of having desired logic is to implement
__iter__
.If you don't overload
__contains__
python would use__iter__
(if it's overloaded) to check whether or not your data structure contains specified value.