如果我在Python中创建自己的类,我应该定义什么函数以允许使用in操作符,例如。
class MyClass(object):
...
m = MyClass()
if 54 in m:
...
如果我在Python中创建自己的类,我应该定义什么函数以允许使用in操作符,例如。
class MyClass(object):
...
m = MyClass()
if 54 in m:
...
当前回答
一个更完整的答案是:
class MyClass(object):
def __init__(self):
self.numbers = [1,2,3,4,54]
def __contains__(self, key):
return key in self.numbers
在这里,当你问54是否在m中时,你会得到True:
>>> m = MyClass()
>>> 54 in m
True
参见关于重载__contains__的文档。
其他回答
获得所需逻辑的另一种方法是实现__iter__。
如果你没有重载__contains__, python将使用__iter__(如果它被重载)来检查你的数据结构是否包含指定的值。
一个更完整的答案是:
class MyClass(object):
def __init__(self):
self.numbers = [1,2,3,4,54]
def __contains__(self, key):
return key in self.numbers
在这里,当你问54是否在m中时,你会得到True:
>>> m = MyClass()
>>> 54 in m
True
参见关于重载__contains__的文档。
MyClass。__contains__(自我、项目)