Si estoy creando mi propia clase en Python, ¿qué función debo definir para permitir el uso del operador 'in', p.¿Invalidar el operador 'in' de Python?
class MyClass(object):
...
m = MyClass()
if 54 in m:
...
Si estoy creando mi propia clase en Python, ¿qué función debo definir para permitir el uso del operador 'in', p.¿Invalidar el operador 'in' de Python?
class MyClass(object):
...
m = MyClass()
if 54 in m:
...
una respuesta más completa es:
class MyClass(object):
def __init__(self):
self.numbers = [1,2,3,4,54]
def __contains__(self, key):
return key in self.numbers
Aquí se podrían obtener True cuando preguntando si era 54 en m:
>>> m = MyClass()
>>> 54 in m
True
@pthulin, el suyo puede ser "más completo" en términos de código, pero los enlaces de Ignacio a la documentación, que siempre es una gran ventaja para algunos. –
@PEter. Sí, pero algunos de nosotros preferimos una buena representación visual de la respuesta. Ignacio hizo poco para beneficiar la pregunta, aparte de dirigirnos aquí primero en lugar de google, no gracias. –
Zoran, estoy de acuerdo, e incluso he votado a favor esta respuesta y no la otra. Solo estoy señalando que una verdadera buena respuesta siempre debe vincular a documentos, si está disponible. –
También puede ser que desee echar un vistazo a un marco de anulación operador infijo yo era capaz de utilizar para crear un lenguaje específico de dominio:
Buen truco. No puedo pensar en un caso de uso para eso, pero muy limpio. –
En realidad estaba buscando cómo reemplazar el 'is' y operadores 'is not'. Como un 'query = tinydb.Query(). Field == value', para poder también escribir' Query(). Field no es None'. Pero parece que me queda '' __eq__' y '__ne__' por el momento, lo que lleva al campo' Query(). 'No piadoso! = None'. (sarc) –