通常(至少在oop中),您可以使对象成形为所需的行为。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)仅计算一次并将其存储在类中,依此类推...

Logo

腾讯云面向开发者汇聚海量精品云计算使用和开发经验,营造开放的云计算技术生态圈。

更多推荐