I didn't comment on the private members so far, but since you're adding getter methods, I will.

Python support private class members, but in practice they aren't as useful as in Java. Python has other ways of dealing with protecting classes' members: the descriptor protocol.

Specifically, properties: http://docs.python.org/2/howto/descriptor.html#properties

You can start out with a public class member, and when you decide to restrict or control access, you simply add a property wrapper around it.

So I would suggest changing all the __private_vars into public vars and dropping the getters.