Why do you pass in node_types in the constructor? If it's not something that changes often, you could simply do something like:
self.node_types = NodeTypes()
and keep required parameters of the constructor to a minimum. 

You might have a plan for doing it this way though - I just don't know what it is.