Python进阶-----类的继承、接口继承及归一化设计
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了Python进阶-----类的继承、接口继承及归一化设计,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含4218字,纯文字阅读大概需要7分钟。
内容图文
![Python进阶-----类的继承、接口继承及归一化设计](/upload/InfoBanner/zyjiaocheng/852/7f5d3f45c3e1490289fa298b4051a037.jpg)
一、什么是继承
类的继承:继承是一种创建新类的方式,新建的类可以继承一个或多个父类(python支持多继承),父类又可称为基类或超类,新建的类
称为派生类或子类。子类会“遗传”父类的属性,从而解决代码重用问题
python中类的继承分为:单继承和多继承
1 class Father: 2 money = 10000 3 def __init__(self,father_name,father_age): 4 self.father_name = father_name 5 self.father_age = father_age 6 def hit_son(self): 7 print('爸爸打儿子') 8 9 class Son(Father): #该处即为子类继承父类()中为父类名 10 pass #在类后面括号中写入另外一个类名,表示当前类继承另外一个类 11 12 s = Son('Meanwey',24) #实例化子类时,传入的是父类的init需要的参数 13 s.hit_son() #继承了父类hit_son方法 14 print(s.money) #继承了父类的类的数据属性 15 print(s.father_age) #继承了父类的实例的数据属性 16 s.money = 20000 #给实例增加数据属性money,但是不会改变父类的属性 17 print(Father.money,Son.money) #>>> 10000 10000因为Son子类中没有money数据变量,则向上寻找Father中的money 18 #可以发现
二、什么时候用继承
1、当类之间有显著不同,并且较小的类是较大的类所需要的组件时,用组合比较好。
例如:描述一个机器人类,机器人这个大类是由很多互不相关的小类,如机械胳膊类、腿类,身体类、电池类等
2、当类之间有很多相同的功能,提取这些共同的功能做成的基类,用继承比较好。
例如:猫 喵喵叫、吃、喝、拉、撒
狗 汪汪叫、吃、喝、拉、撒
1 class Animal: #定义了一个基类(父类),提取他们共有的属性,都是动物,都会吃喝拉撒 2 def eat(self): 3 print('%s 吃'%self.name) 4 def drink(self): 5 print('%s 喝' % self.name) 6 def shit(self): 7 print('%s 拉' % self.name) 8 def pee(self): 9 print('%s 撒' % self.name) 10 11 class Cat(Animal): #定义了猫这一子类,并继承了动物Animal这一父类 12 def __init__(self,name): 13 self.name = name 14 self.breed = '猫' 15 def cry(self): 16 print('喵喵叫~~') 17 18 class Dog(Animal): #定义了狗这一子类,并继承了动物Animal这一父类 19 def __init__(self,name): 20 self.name = name 21 self.breed = '狗' 22 def cry(self): 23 print('汪汪叫~~') 24 25 ###########执行################ 26 c1 = Cat('小白家的小黑猫') 27 c1.eat() 28 c1.cry() 29 30 c2 = Cat('小黑家的小白猫') 31 c2.drink() 32 c2.cry() 33 34 d1 = Dog('胖子家的小瘦狗') 35 d1.shit() 36 d1.cry()
三、继承同时具有两种含义
1、继承基类(父类)的方法,并作出自己改变(派生)或者扩展(代码重用);
2、声明某个子类兼容于某基类,定义了一个接口类,子类继承接口类,并且实现接口中定义的方法。(称为接口继承)
四、派生
派生就是子类在继承父类的基础上衍生出新的属性。子类中独有的,父类中没有的;或子类定义与父类重名的东西。子类也叫派生类。
五、接口继承与归一化
抽象:即提取类似的部分
接口:就是一个函数
接口继承:定义一个基类,在基类中利用装饰器(@abc.abstractclassmethod)将自己函数定义成接口函数,在子类中继承该基类,
则该子类必须实现接口函数,否则无法实例化。
接口继承实质上是要求“作出一个良好的抽象,这个抽象规定了一个兼容接口(接口函数--只提供函数名,不提供具体功能),使得
外部调用者无需关心具体细节,可一视同仁的处理实现了特定接口的所有对象”---这个在程序设计上就叫做归一化。
也就是在父类里要求子类必须实现的功能,但是子类可以不实现,所以需要模块 import abc,这样使得父类具有限制子类必须实现规定的方法
,具体实现如下:
1 import abc 2 class All_file(metaclass=abc.ABCMeta): #定义基类,且基类不需要实例化 3 @abc.abstractclassmethod #利用该装饰器定义了接口函数 4 def read(self): #这样的话,子类必须实现该函数,不实现,则子类无法实例化 5 pass 6 7 @abc.abstractclassmethod 8 def write(self): #定义write接口函数 9 pass 10 11 class Txt(All_file): #定义子类 12 def read(self): #子类中必须实现All_file基类中的接口函数read() 13 print('文本数据的读取方法') 14 def write(self): 15 print('文本数据的写入方法') 16 17 class Disk(All_file): 18 def read(self): 19 print('磁盘数据的读取方法') 20 def write(self): 21 print('磁盘数据的写入方法') 22 23 t1 = Txt() 24 t1.read()
内容总结
以上是互联网集市为您收集整理的Python进阶-----类的继承、接口继承及归一化设计全部内容,希望文章能够帮你解决Python进阶-----类的继承、接口继承及归一化设计所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。