Зазвичай (принаймні, ооп) ви формуєте свій предмет, щоб він поводився так, як вам хочеться. name in USERNAMES
не є чутливим до регістру, тому USERNAMES
потрібно змінити:
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
Чудова річ у тому, що це відкриває шлях для багатьох вдосконалень, не змінюючи жодного коду поза класом. Наприклад, ви можете змінити self.names
набір для швидшого пошуку, або обчислити (n.lower() for n in self.names)
єдиний раз і зберегти його у класі тощо.
if 'CaseFudge'.lower() in [x.lower() for x in list]