Возможно, вы захотите сделать это, когда «внутренний» класс является одноразовым, который никогда не будет использоваться вне определения внешнего класса. Например, чтобы использовать метакласс, иногда удобно сделать
class Foo(object):
class __metaclass__(type):
....
вместо отдельного определения метакласса, если вы используете его только один раз.
Единственный раз, когда я использовал подобные вложенные классы, я использовал внешний класс только в качестве пространства имен для группировки нескольких тесно связанных классов:
class Group(object):
class cls1(object):
...
class cls2(object):
...
Затем из другого модуля вы можете импортировать Group и ссылаться на них как Group.cls1, Group.cls2 и т. Д. Однако можно утверждать, что вы можете сделать то же самое (возможно, менее запутанно), используя модуль.