Por lo general (en al menos al menos) le das forma a tu objeto para que se comporte de la manera que quieras. name in USERNAMES
no distingue entre mayúsculas y minúsculas, por lo que USERNAMES
debe cambiar:
class NameList(object):
def __init__(self, names):
self.names = names
def __contains__(self, name): # implements `in`
return name.lower() in (n.lower() for n in self.names)
def add(self, name):
self.names.append(name)
# now this works
usernames = NameList(USERNAMES)
print someone in usernames
Lo mejor de esto es que abre el camino para muchas mejoras, sin tener que cambiar ningún código fuera de la clase. Por ejemplo, podría cambiarlo self.names
a un conjunto para búsquedas más rápidas, o calcular la (n.lower() for n in self.names)
única vez y almacenarlo en la clase, etc.
if 'CaseFudge'.lower() in [x.lower() for x in list]