一、什么是继承                                                                         

继承是一种创建新的类的方式,在python中,新建的类可以继承自一个或者多个父类,原始类称为基类或超类,新建的类称为派生类或子类。

python中类的继承分为:单继承和多继承

class ParentClass1: #定义父类
    pass

class ParentClass2: #定义父类
    pass

class SubClass1(ParentClass1): #单继承,基类是ParentClass1,派生类是SubClass
    pass

class SubClass2(ParentClass1,ParentClass2): #python支持多继承,用逗号分隔开多个继承的类
    pass

查看继承

>>> SubClass1.__bases__
(<class '__main__.ParentClass1'>,)
>>> SubClass2.__bases__
(<class '__main__.ParentClass1'>, <class '__main__.ParentClass2'>)

提示:如果没有指定基类,python的类会默认继承object类,object是所有python类的基类,它提供了一些常见方法(如__str__)的实现。

>>> ParentClass1.__bases__
(<class 'object'>,)
>>> ParentClass2.__bases__
(<class 'object'>,)

 

二、继承与抽象(先抽象再继承)                                                 

抽象即抽取类似或者说比较像的部分。

抽象分成两个层次: 

1.将奥巴马和梅西这俩对象比较像的部分抽取成类; 

2.将人,猪,狗这三个类比较像的部分抽取成父类。

抽象最主要的作用是划分类别(可以隔离关注点,降低复杂度)

python基础----继承与派生、组合、接口与归一化设计、抽象类、子类中调用父类方法

继承:是基于抽象的结果,通过编程语言去实现它,肯定是先经历抽象这个过程,才能通过继承的方式去表达出抽象的结构。

抽象只是分析和设计的过程中,一个动作或者说一种技巧,通过抽象可以得到类

python基础----继承与派生、组合、接口与归一化设计、抽象类、子类中调用父类方法

 

 

三、继承与重用性                                                                      

  1 ==========================第一部分
  2 例如
  3 
  4   猫可以:喵喵叫、吃、喝、拉、撒
  5 
  6   狗可以:汪汪叫、吃、喝、拉、撒
  7 
  8 如果我们要分别为猫和狗创建一个类,那么就需要为 猫 和 狗 实现他们所有的功能,伪代码如下:
  9  
 10 
 11 #猫和狗有大量相同的内容
 12 class 猫:
 13 
 14     def 喵喵叫(self):
 15         print '喵喵叫'
 16 
 17     def 吃(self):
 18         # do something
 19 
 20     def 喝(self):
 21         # do something
 22 
 23     def 拉(self):
 24         # do something
 25 
 26     def 撒(self):
 27         # do something
 28 
 29 class 狗:
 30 
 31     def 汪汪叫(self):
 32         print '喵喵叫'
 33 
 34     def 吃(self):
 35         # do something
 36 
 37     def 喝(self):
 38         # do something
 39 
 40     def 拉(self):
 41         # do something
 42 
 43     def 撒(self):
 44         # do something
 45 
 46 
 47 
 48 ==========================第二部分
 49 上述代码不难看出,吃、喝、拉、撒是猫和狗都具有的功能,而我们却分别的猫和狗的类中编写了两次。如果使用 继承 的思想,如下实现:
 50 
 51   动物:吃、喝、拉、撒
 52 
 53      猫:喵喵叫(猫继承动物的功能)
 54 
 55      狗:汪汪叫(狗继承动物的功能)
 56 
 57 伪代码如下:
 58 class 动物:
 59 
 60     def 吃(self):
 61         # do something
 62 
 63     def 喝(self):
 64         # do something
 65 
 66     def 拉(self):
 67         # do something
 68 
 69     def 撒(self):
 70         # do something
 71 
 72 # 在类后面括号中写入另外一个类名,表示当前类继承另外一个类
 73 class 猫(动物):
 74 
 75     def 喵喵叫(self):
 76         print '喵喵叫'
 77         
 78 # 在类后面括号中写入另外一个类名,表示当前类继承另外一个类
 79 class 狗(动物):
 80 
 81     def 汪汪叫(self):
 82         print '喵喵叫'
 83 
 84 
 85 
 86 
 87 ==========================第三部分
 88 #继承的代码实现
 89 class Animal:
 90 
 91     def eat(self):
 92         print("%s 吃 " %self.name)
 93 
 94     def drink(self):
 95         print ("%s 喝 " %self.name)
 96 
 97     def shit(self):
 98         print ("%s 拉 " %self.name)
 99 
100     def pee(self):
101         print ("%s 撒 " %self.name)
102 
103 
104 class Cat(Animal):
105 
106     def __init__(self, name):
107         self.name = name
108         self.breed = ''
109 
110     def cry(self):
111         print('喵喵叫')
112 
113 class Dog(Animal):
114 
115     def __init__(self, name):
116         self.name = name
117         self.breed=''
118 
119     def cry(self):
120         print('汪汪叫')
121 
122 
123 # ######### 执行 #########
124 
125 c1 = Cat('小白家的小黑猫')
126 c1.eat()
127 
128 c2 = Cat('小黑的小白猫')
129 c2.drink()
130 
131 d1 = Dog('胖子家的小瘦狗')
132 d1.eat()
133 
134 使用继承来重用代码比较好的例子
使用继承来重用代码比较好的例子 

相关文章: