python – What does __contains__ do, what can call __contains__ function
python – What does __contains__ do, what can call __contains__ function
Like all special methods (with magic names that begin and end in __
), __contains__
is not meant to be called directly (except in very specific cases, such as up=calls to the superclass): rather, such methods are called as part of the operation of built-ins and operators. In the case of __contains__
, the operator in question is in
— the containment check operator.
With your class a
as you present it (except for fixing your typo, and using True
instead of true
!-), and b
as its instance, print x in b
will print True
— and so will any other containment check on b
, since b
always returns True
(because self.d
, a non-empty string, is true).
to get your code to do something (although nothing useful):
class a(object):
d = ddd
def __contains__(self, m):
if self.d:
return True
b = a()
>>> d in b
True
The docs.
python – What does __contains__ do, what can call __contains__ function
__contains__
method defines how instances of class behave when they appear at right side of in
and not in
operator.
class Person(object):
def __init__(self,name,age):
self.name = name
self.age = age
def __contains__(self,param1):
return True if param1 in self.__dict__.keys() else False
>>> p = Person(Robby Krieger,23)
>>> name in p
True