Learning objectives
By the end of this section you should be able to
- Label relationships between classes as types of inheritance.
- Construct classes that form hierarchical inheritance.
Hierarchical inheritance basics
Hierarchical inheritance is a type of inheritance in which multiple classes inherit from a single superclass. Multilevel inheritance is a type of inheritance in which a subclass becomes the superclass for another class. Combining hierarchical and multilevel inheritance creates a tree-like organization of classes.
Concepts in Practice
Hierarchical organization
Implementing hierarchical inheritance
Multiple classes can inherit from a single class by simply including the superclass name in each subclass definition.
Example 13.4
Choir members
class ChoirMember:
def display(self):
print("Current choir member")
class Soprano(ChoirMember):
def display(self):
super().display()
print("Part: Soprano")
class Soprano1(Soprano):
def display(self):
super().display()
print("Division: Soprano 1")
class Alto(ChoirMember):
def display(self):
super().display()
print("Part: Alto")
class Tenor(ChoirMember):
def display(self):
super().display()
print("Part: Tenor")
class Bass(ChoirMember):
def display(self):
super().display()
print("Part: Bass")
mem_10 = Alto()
mem_13 = Tenor()
mem_15 = Soprano1()
mem_10.display()
print()
mem_13.display()
print()
mem_15.display()
The code's output is:
Current choir member Part: Alto Current choir member Part: Tenor Current choir member Part: Soprano Division: Soprano 1
Concepts in Practice
Implementing hierarchical inheritance
Consider the program:
class A:
def __init__(self, a_attr=0):
self.a_attr = a_attr
class B(A):
def __init__(self, a_attr=0, b_attr=0):
super().__init__(a_attr)
self.b_attr = b_attr
class C(A):
def __init__(self, a_attr=0, c_attr=0):
super().__init__(a_attr)
self.c_attr = c_attr
class D(B):
def __init__(self, a_attr=0, b_attr=0, d_attr=0):
super().__init__(a_attr, b_attr)
self.d_attr = d_attr
b_inst = B(2)
c_inst = C(c_attr=4)
d_inst = D(6, 7)
Try It
Overriding methods
Define three classes: Instrument
, Woodwind
, and String
.
Instrument
has instance attributeowner
, with default value of "unknown".Woodwind
inherits fromInstrument
and has instance attributematerial
with default value of "wood".String
inherits fromInstrument
and has instance attributenum_strings
, with default value of 4.
The output should match:
This flute belongs to unknown and is made of silver This cello belongs to Bea and has 4 strings