C++ programmer here. 
In Python, how do you make sure that a particular class (e.g. UsefulClass) can only be created through its related factory class (e.g. FactoryClass)? But, at the same time the public methods of UsefulClass are callable directly?
In C++ this can be easily achieved by making the relevant methods of UsefulClass public, and by making its default constructor (and any other constructors) private. The related FactoryClass (which can be a "friend" of the UsefulClass) can return instances of UsefulClass and thereby strictly controlling creation, while allowing the user to directly call the public methods of UsefulClass.
Thanks.
Don't.
Python is not C++ and using patterns that worked before are silly in Python. In particular, Python is not a "Bondage and Domination" language where phrases like "thereby strictly controlling creation" don't apply.
"If you didn't want to instantiate a UsefulClass then why did you?" — me.
If you can't trust yourself or your colleagues to read and follow the code's internal documentation, you're screwed regardless of the implementation language.
Only creating object through factory class in Python - factory class related