VB.net 2010 视频教程 VB.net 2010 视频教程 python基础视频教程
SQL Server 2008 视频教程 c#入门经典教程 Visual Basic从门到精通视频教程
当前位置:
首页 > temp > 简明python教程 >
  • python基础(24):面向对象三大特性一(继承)

1. 继承

1.1 什么是继承

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

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


  1. class ParentClass1: #定义父类
  2.   pass
  3.  
  4. class ParentClass2: #定义父类
  5.   pass
  6.  
  7. class SubClass1(ParentClass1): #单继承,基类是ParentClass1,派生类是SubClass
  8.   pass
  9.  
  10. class SubClass2(ParentClass1,ParentClass2): #python支持多继承,用逗号分隔开多个继承的类
  11.   pass

查看继承:


  1. >>> SubClass1.__bases__ #__base__只查看从左到右继承的第一个子类,__bases__则是查看所有继承的父类
  2. (<class '__main__.ParentClass1'>,)
  3. >>> SubClass2.__bases__
  4. (<class '__main__.ParentClass1'>, <class '__main__.ParentClass2'>)

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


  1. >>> ParentClass1.__bases__
  2. (<class 'object'>,)
  3. >>> ParentClass2.__bases__
  4. (<class 'object'>,)

1.2 继承与抽象

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

抽象分成两个层次: 

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

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

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

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

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

 

 

1.3 继承与重用性

使用继承来解决代码重用的例子:


  1. ==========================第一部分
  2. 例如
  3.  
  4.   猫可以:吃、喝、爬树
  5.  
  6.   狗可以:吃、喝、看家
  7.  
  8. 如果我们要分别为猫和狗创建一个类,那么就需要为 实现他们所有的功能,伪代码如下:
  9.  
  10.  
  11. #猫和狗有大量相同的内容
  12. class 猫:
  13.  
  14. def 吃(self):
  15. # do something
  16.  
  17. def 喝(self):
  18. # do something
  19.  
  20. def 爬树(self):
  21. # do something
  22.  
  23.  
  24.  
  25. class 狗:
  26.  
  27. def 吃(self):
  28. # do something
  29.  
  30. def 喝(self):
  31. # do something
  32.  
  33. def 看家(self):
  34. #do something
  35.  
  36.  
  37. ==========================第二部分
  38. 上述代码不难看出,吃、喝是猫和狗都具有的功能,而我们却分别的猫和狗的类中编写了两次。如果使用 继承 的思想,如下实现:
  39.  
  40.   动物:吃、喝
  41.  
  42.    猫:爬树(猫继承动物的功能)
  43.  
  44.    狗:看家(狗继承动物的功能)
  45.  
  46. 伪代码如下:
  47. class 动物:
  48.  
  49. def 吃(self):
  50. # do something
  51.  
  52. def 喝(self):
  53. # do something
  54.  
  55. # 在类后面括号中写入另外一个类名,表示当前类继承另外一个类
  56. class 猫(动物):
  57.  
  58. def 爬树(self):
  59. print '喵喵叫'
  60.  
  61. # 在类后面括号中写入另外一个类名,表示当前类继承另外一个类
  62. class 狗(动物):
  63.  
  64. def 看家(self):
  65. print '汪汪叫'
  66.  
  67.  
  68. ==========================第三部分
  69. #继承的代码实现
  70. class Animal:
  71.  
  72. def eat(self):
  73. print("%s 吃 " %self.name)
  74.  
  75. def drink(self):
  76. print ("%s 喝 " %self.name)
  77.  
  78. class Cat(Animal):
  79.  
  80. def __init__(self, name):
  81. self.name = name
  82. self.breed = ''
  83.  
  84. def climb(self):
  85. print('爬树')
  86.  
  87. class Dog(Animal):
  88.  
  89. def __init__(self, name):
  90. self.name = name
  91. self.breed='

相关教程