Обычно (по крайней мере, по крайней мере) вы формируете свой объект, чтобы вести себя так, как вы хотите. 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)
только один раз и сохранить его в классе и т. Д. ...
Вы отправили ссылку на документацию для выпуска Oxygen, поэтому я предлагаю установить эту версию. Релиз Boron является старым и больше не поддерживается / поддерживается вверх по течению.