Tag: inner class
python inner class
An inner class, also known as a nested class, is a class that’s defined within the scope of another class. When an object is instantiated from an outer class, the object inside the nested class can also be used. It’s possible for a class to contain multiple nested classes, though they’re often used sparingly.
Python’s ability to nest classes within other classes is one of its many versatile features. A nested class inherits all attributes and methods from its enclosing class.
Related Course: Python Programming Bootcamp: Go from zero to hero
Inner Class in Python: A Simple Example
In Python, inner classes or nested classes can be defined inside the scope of another class. These inner classes can access all the members of their enclosing class.
Proper indentation is crucial when defining inner classes. Typically, each inner class is indented by 4 spaces to adhere to PEP 8, Python’s style guide.
Below is an example where we define a Human class with a nested Head class. We then create an instance of the Human class and call a method from the nested Head class:
1 | #!/usr/bin/env python |
Output:
1 | Guido |
In the example above, the inner Head class possesses its own method. Inner classes can encapsulate both methods and variables. The constructor of the Human class (__init__) initializes a new head object.
Multiple Inner Classes in Python
Python doesn’t impose a limitation on the number of inner classes. Here’s an example that includes two nested classes within the Human class:
1 | #!/usr/bin/env python |
Utilizing inner classes allows for more organized and object-oriented code. A single outer object can comprise multiple sub-objects, enabling a more structured programming approach.
Benefits of Using Inner Classes
Grouping classes within other classes through the use of inner classes can offer several benefits:
- Inner classes are confined to a local scope, ensuring encapsulation.
- It becomes more evident which classes share a relationship, enhancing code readability.
Although inner or nested classes provide structural benefits, they’re not as commonly used in Python compared to other OOP languages.