mirror of
https://github.com/micropython/micropython.git
synced 2026-01-07 12:40:15 +01:00
py/objtype: Convert result of user __contains__ method to bool.
Per https://docs.python.org/3/reference/expressions.html#membership-test-operations For user-defined classes which define the contains() method, x in y returns True if y.contains(x) returns a true value, and False otherwise. Fixes issue #7884.
This commit is contained in:
committed by
Damien George
parent
52c2580a40
commit
1ded8a2977
@@ -21,3 +21,27 @@ b = B([1, 2])
|
||||
print(1 in b)
|
||||
print(2 in b)
|
||||
print(3 in b)
|
||||
|
||||
|
||||
class C:
|
||||
def __contains__(self, arg):
|
||||
return arg
|
||||
|
||||
|
||||
print(C().__contains__(0))
|
||||
print(C().__contains__(1))
|
||||
print(C().__contains__(''))
|
||||
print(C().__contains__('foo'))
|
||||
print(C().__contains__(None))
|
||||
|
||||
print(0 in C())
|
||||
print(1 in C())
|
||||
print('' in C())
|
||||
print('foo' in C())
|
||||
print(None in C())
|
||||
|
||||
print(0 not in C())
|
||||
print(1 not in C())
|
||||
print('' not in C())
|
||||
print('foo' not in C())
|
||||
print(None not in C())
|
||||
|
||||
Reference in New Issue
Block a user