Généralement (en programmation orientée objet, au moins), vous pouvez modeler votre objet à se comporter de la façon dont vous le souhaitez. name in USERNAMES
n'est pas insensible à la casse, donc, USERNAMES
doit changer:
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
La grande chose à ce sujet est qu'il ouvre la voie pour de nombreuses améliorations, sans avoir à changer tout le code en dehors de la classe. Par exemple, vous pouvez modifier l' self.names
d'un ensemble pour accélérer les recherches, ou calculer le (n.lower() for n in self.names)
qu'une seule fois et de le stocker dans la classe et ainsi de suite ...