vamos a ver un ejemplo muy simple de método mágico __contains__:
Supongamos que tengo clase Player y mi método __init__ toma un argumento de serie nombre. En main he creado un objeto (obj1) de la clase Player.
Ahora bien, si quiero saber si mi obj1 (en este caso atributo name del obj1) contiene una cadena en particular, subcadena o un alfabeto, tengo que poner en práctica __contains__ método que se muestra en el ejemplo.
Si mi clase tiene __contains__ método puedo llamar a un operador incorporado en en mis objetos personalizados como se muestra en el ejemplo.
class Player():
def __init__(self, name):
self.name=name
def __contains__(self, substring):
if substring in self.name:
return True
else:
return False
obj1=Player("Sam")
print ('am' in obj1) ----> True
print ('ami' in obj1) ----> False