And another thing (separate issue) ...

IMHO I find it best practice to initialise **all** class attributes within the ```__init__()```. This allows you to add doc-strings against them i.e.

    self.wibble = []
    """This is the wibble attribute."""

It also explicitly declares to the reader of the code all the attributes of the class in one place; saving them the task of discovering what attributes are set, which can be peppered through out the class methods.

I've burnt my fingers several times in the past when I've accessed a class attribute that's not been initialised or created ... this is particularly relevant (like in this case) when you have quite a few class attributes defined.