I have a class whose attributes are not known beforehand:

```
class Event():
    def __init__(self, **kwargs):
        for key, value in kwargs.items():
            setattr(self, key, value)

```

and another one which is basically a list of objects Event:

```
class Collection(list):
    def __init__(self):
        self.members = []

    def add(self,new):
        try:
            self.members.extend(new)
        except TypeError:
            self.members.append(new)

```

Let's say now that I define 3 objects Event:

```
a = Event(name="a",value=1)
b = Event(name="b",value=2)
c = Event(name="c",other=True)

```

And I create a Collection from them:

```
col = Collection()
col.add([a,b,c])

```

What I want is to be able to print out all the values of the objects in the list for a given attribute (if the attribute does not exist for an object, it should return None or any other pre-defined value). For example:

```
print col.name #should return ["a","b","c"]
print col.value #should return [1,2,None]

```

I have read the following answer: [Extract list of attributes from list of objects in python](https://stackoverflow.com/questions/2739800/extract-list-of-attributes-from-list-of-objects-in-python)

But that doesn't work here since the name of my attribute is not known by advance, and some might not even be defined. How should I define my class Collection(), or maybe even re-think everything to achieve my goal ?