Browse Source

py: Implement __contains__ special method.

pull/671/merge
Damien George 11 years ago
parent
commit
58cbb4d661
  1. 4
      py/objtype.c
  2. 23
      tests/basics/class-contains.py

4
py/objtype.c

@ -384,7 +384,9 @@ STATIC const qstr binary_op_method_name[] = {
MP_BINARY_OP_LESS_EQUAL,
MP_BINARY_OP_MORE_EQUAL,
MP_BINARY_OP_NOT_EQUAL,
MP_BINARY_OP_IN,
*/
[MP_BINARY_OP_IN] = MP_QSTR___contains__,
/*
MP_BINARY_OP_IS,
*/
[MP_BINARY_OP_EXCEPTION_MATCH] = MP_QSTR_, // not implemented, used to make sure array has full size

23
tests/basics/class-contains.py

@ -0,0 +1,23 @@
# A contains everything
class A:
def __contains__(self, key):
return True
a = A()
print(True in a)
print(1 in a)
print(() in a)
# B contains given things
class B:
def __init__(self, items):
self.items = items
def __contains__(self, key):
return key in self.items
b = B([])
print(1 in b)
b = B([1, 2])
print(1 in b)
print(2 in b)
print(3 in b)
Loading…
Cancel
Save