py: Implement __contains__ special method.

pull/671/merge
Damien George 2014-06-10 23:07:56 +01:00
rodzic 62f7ba7a81
commit 58cbb4d661
2 zmienionych plików z 26 dodań i 1 usunięć

Wyświetl plik

@ -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

Wyświetl plik

@ -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)