What is the purpose of python's inner classes?

Geo picture Geo · Apr 5, 2009 · Viewed 58.7k times · Source

Python's inner/nested classes confuse me. Is there something that can't be accomplished without them? If so, what is that thing?

Answer

Aziz picture Aziz · Apr 5, 2009

Quoted from http://www.geekinterview.com/question_details/64739:

Advantages of inner class:

  • Logical grouping of classes: If a class is useful to only one other class then it is logical to embed it in that class and keep the two together. Nesting such "helper classes" makes their package more streamlined.
  • Increased encapsulation: Consider two top-level classes A and B where B needs access to members of A that would otherwise be declared private. By hiding class B within class A A's members can be declared private and B can access them. In addition B itself can be hidden from the outside world.
  • More readable, maintainable code: Nesting small classes within top-level classes places the code closer to where it is used.

The main advantage is organization. Anything that can be accomplished with inner classes can be accomplished without them.