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.