Je voudrais utiliser list comprehensions. Supposons que ceci est votre Client
classe:
>>> class Client:
... def __init__(self, screenName):
... self.screenName = screenName
Si je suis arrivé cette liste de clients:
>>> l = [Client('a'), Client('b'), Client('c')]
... Je peux obtenir une liste ne contenant que les clients ayant un nom donné:
>>> [e for e in l if e.screenName == 'b']
[<__main__.Client instance at 0x2e52b0>]
maintenant, juste obtenir le premier - et seulement en supposant qu'il - élément:
>>> [e for e in l if e.screenName == 'b'][0]
<__main__.Client instance at 0x2e52b0>
>>> c = [e for e in l if e.screenName == 'b'][0]
>>> c.screenName
'b'
Ceci est assez court et élégant à mon humble avis, mais peut être moins efficace parce que la compréhension de la liste va parcourir toute la liste. Si vous ne voulez éviter cette surcharge, vous pouvez obtenir un générateur au lieu d'une nouvelle liste à l'aide entre parenthèses plutôt que de crochets:
>>> g = (e for e in l if e.screenName == 'b')
>>> g
<generator object <genexpr> at 0x2e5440>
>>> g.next()
<__main__.Client instance at 0x2e52b0>
Cependant, notez que la méthode next()
peut être appelée une seule fois.
HTH!
Je suppose que vous voulez dire client.screen == recherche –