#!/usr/bin/python
# Filename: inherit.py
class
SchoolMember
:
'''Represents any school member.'''
def
__init__
(self, name, age):
self.name = name
self.age = age
print
'(Initialized SchoolMember: %s)'
% self.name
def
tell
(self):
'''Tell my details.'''
print
'Name:"%s" Age:"%s"'
% (self.name, self.age),
class
Teacher
(SchoolMember):
'''Represents a teacher.'''
def
__init__
(self, name, age, salary):
SchoolMember.__init__(self, name, age)
self.salary = salary
print
'(Initialized Teacher: %s)'
% self.name
def
tell
(self):
SchoolMember.tell(self)
print
'Salary: "%d"'
% self.salary
class
Student
(SchoolMember):
'''Represents a student.'''
def
__init__
(self, name, age, marks):
SchoolMember.__init__(self, name, age)
self.marks = marks
print
'(Initialized Student: %s)'
% self.name
def
tell
(self):
SchoolMember.tell(self)
print
'Marks: "%d"'
% self.marks
t = Teacher(
'Mrs. Shrividya'
,
40
,
30000
)
s = Student(
'Swaroop'
,
22
,
75
)
members = [t, s]
for
member
in
members:
member.tell()
# works for both Teachers and Students
(SourceFile: Code/inherit. py)
Output
$ python inherit.py
(Initialized SchoolMember: Mrs. Shrividya)
(Initialized Teacher: Mrs. Shrividya)
(Initialized SchoolMember: Swaroop)
(Initialized Student: Swaroop)
Name:"Mrs. Shrividya" Age:"40" Salary: "30000"
Name:"Swaroop" Age:"22" Marks: "75"
How it works
To use inheritance, we use the basic class name as a tuples after the class name when defining the class. Then, we noticed__init__
Dedicated useself
To initialize the basic class of the object. This is important at 01:10 -- Python does not automatically call the constructor of the basic class. You have to call it in person.
We also observe that we add the class name prefix before the method call, and thenself
Variables and other parameters are passed to it.
Note that when we useSchoolMember
Classtell
When usingTeacher
AndStudent
OnlySchoolMember
.
In addition, in this example, we calltell
InsteadSchoolMember
Classtell
Method. It can be understood that python always finds the corresponding type of method first, which is the case in this example. If it cannot find the corresponding method in the export class, it will start to search for it one by one in the basic class. The basic class is specified in the tuples when the class is defined.
Annotation of a term -- if more than one class is listed in the inherited tuples, it is calledMulti-Inheritance.