web-dev-qa-db-fra.com

Extraire la liste des attributs de la liste des objets dans python

J'ai une liste niforme d'objets en python:

class myClass(object):
    def __init__(self, attr):
        self.attr = attr
        self.other = None

objs = [myClass (i) for i in range(10)]

Maintenant, je veux extraire une liste avec un attribut de cette classe (disons attr), afin de lui transmettre une fonction (pour tracer ces données par exemple)

Quelle est la façon Pythonique de le faire,

attr=[o.attr for o in objsm]

?

Peut-être dériver une liste et y ajouter une méthode, donc je peux utiliser un idiome comme

objs.getattribute("attr")

?

56
franjesus

Vous pouvez également écrire:

attr=(o.attr for o in objsm)

De cette façon, vous obtenez un générateur qui conserve la mémoire. Pour plus d'avantages, regardez Generator Expressions .

56
Reto Aebersold

attrs = [o.attr for o in objs] était le bon code pour faire une liste comme celle que vous décrivez. N'essayez pas de sous-classer list pour cela. Y a-t-il quelque chose que vous n'avez pas aimé dans cet extrait?

64
Mike Graham