"Private" nested classes that are never used inside the enclosing class are usually dead code: unnecessary, inoperative code that should be removed. Cleaning out dead code decreases the size of the maintained codebase, making it easier to understand the program and preventing bugs from being introduced.
Python has no real private classes. Every class is accessible. There are however two conventions indicating that a class is not meant to be "public":
_MyClass) should be seen as non-public and might change without prior
notice. They should not be used by third-party libraries or software. It is ok to use those classes inside the library defining them but it should
be done with caution. __MyClass will be renamed as _classname__MyClass, where classname is the enclosing class's name without its
leading underscore(s). Class-Private classes shouldn't be used outside of their enclosing class. This rule raises an issue when a private nested class (either with one or two leading underscores) is never used inside its parent class.
class Noncompliant:
class __MyClass1(): # Noncompliant
pass
class _MyClass2(): # Noncompliant
pass
class Compliant:
class __MyClass1():
pass
class _MyClass2():
pass
def process(self):
return Compliant.__MyClass1()
def process(self):
return Compliant._MyClass2()