First, what is inheritance:
Inheritance is a way of creating a new class.
Second, why to use inheritance
Reduce the redundancy of your code
through the code to explain
ClassStudent:def __init__(self, name, age, Sex): Self.name=name Self.age=Age Self.sex=SexdefChoice_course (self):Print('%s is choice coursing'%self.name)classTeacher:def __init__(self, name, age, Sex, tea_id): Self.name=name Self.age=Age Self.sex=Sex self.tea_id=tea_iddefSet_score (Self, student_obj):Print('%s is set_score to%s'% (Self.name, student_obj.name))
‘‘‘
I have defined here a teacher and student class, so write no problem, but there are a lot of repetitive code, how to solve this problem, it is necessary to use the Inheritance feature analysis, there are many duplicate code in the Init method,
‘‘‘
ClassPeople:
Def__INIT__ (Self, name, age, sex):
Self.name = Name
Self.age = Age
Self.sex = Sex
ClassStudent (People):
Def__INIT__ (Self, name, age, sex):
People.__INIT__ (Self, name, age, sex)#This is a class, directly through the class name.property, called to the property of another class, which is not related to inheritance
# super (Student,self) __init__ (name,age,sex) #This is done bySuperMethod that accesses the property of the parent class of the class, which is related to inheritance
DefChoice_course (Self):
Print'%s is choice coursing '%Self.name)
ClassTeacher (People):
Def__init__ (self super (Teacherself). __init__ (Name, sex)
self.tea_id = tea_id
def set_score (self Span style= "COLOR: #8888c6" >print ( '%s is set_score to%s '% ( self.name
There's a point of knowledge: two ways to invoke a parent class property
# 1, through the class name . property, just access a property of the class directly, remembering that this inheritance is useless
# 2, through super method,super. Property can access the properties of its parent class, which is related to inheritance.
Let me tell you, in fact, a class he can inherit multiple parent classes at the same time, then there is a problem, that is the order of the lookup attributes?
#I'll talk about this. class divided into new class and classic class
#New class: Whatever inheritsObjectClass and his subclasses, these are the new classes in thePython3, all classes will inherit by defaultObjectclass, soPython3Only new classes
#Classic class: No use of inheritanceObjectClass and its subclasses, all of which are classic classes in thePython2, there are both new and classic classes
#If this class has only one parent class, then its property lookup order is(Using object to adjust properties)
#The namespace of the object, the namespace of the object corresponding to the class, the namespace of the parent class of the class, the namespace of the parent class of the class parent class .... Always findObjectClass
#If the class has more than one parent class, then his property lookup order is(Object Tuning Properties)
#Here's an example.
# class C (object):
# a = ' C '
#
# class B (object):
# a = ' B '
#
# class D (object):
# a = ' d '
#
# class F (B, C, D):
# Pass
#
# Print (F.A)
# Print (f.__bases__)
#SoFThe search order is firstB,c,dYou can try running under the various classes under theAattribute is commented out, it can be verified
#Since this is inPython3, these classes are the new class, and the new class lookup method is breadth-first: So the lookup order isF、B、C、D、ObjectThe last is to findObject
# If these classes are classic classes, look for depth first: So the order is f, b< Span style= "COLOR: #808080", object C D
# Span style= "COLOR: #808080" > sum up: How to find new classes: Breadth First
# Classic class Lookup method: Depth First
Object-oriented three major features-inheritance