Python基础(17)_面向对象程序设计(抽象类、继承原理、封装、多态,绑定方法)
2017-07-06 21:13
746 查看
一、抽象类
抽象类是一个特殊的类,它的特殊之处在于只能被继承,不能被实例化1、在python中实现抽象类
import abc #利用abc模块实现抽象类 class All_file(metaclass=abc.ABCMeta): all_type='file' @abc.abstractmethod #定义抽象方法,无需实现功能 def read(self): '子类必须定义读功能' pass @abc.abstractmethod #定义抽象方法,无需实现功能 def write(self): '子类必须定义写功能' pass # class Txt(All_file): # pass # # t1=Txt() #报错,子类没有定义抽象方法 class Txt(All_file): #子类继承抽象类,但是必须定义read和write方法 def read(self): print('文本数据的读取方法') def write(self): print('文本数据的读取方法') class Sata(All_file): #子类继承抽象类,但是必须定义read和write方法 def read(self): print('硬盘数据的读取方法') def write(self): print('硬盘数据的读取方法') wenbenwenjian=Txt() yingpanwenjian=Sata() #这样大家都是被归一化了,也就是一切皆文件的思想 wenbenwenjian.read() yingpanwenjian.write()
2、抽象类与接口
抽象类的本质还是类,指的是一组类的相似性,包括数据属性(如all_type)和函数属性(如read、write),而接口只强调函数属性的相似性。
抽象类是一个介于类和接口直接的一个概念,同时具备类和接口的部分特性,可以用来实现归一化设计
二、继承的实现原理(继承顺序)
1、在python中,如果类继承了多个类,那么其寻找的方式有两种:分别是:广度优先和深度优先当类是新式类是,多继承情况下,会按照广度优先方式查找
[b]当类是经典类是,多继承情况下,会按照深度优先方式查找[/b]
假如有A-H类的继承关系如下:
HOST='127.0.0.1' PORT=3306 DB_PATH=r'C:\Users\Administrator\PycharmProjects\test\面向对象编程\test1\db'
settings.py内容
import settings import hashlib import time class MySQL: def __init__(self,host,port): self.host=host self.port=port @classmethod def from_conf(cls): print(cls) return cls(settings.HOST,settings.PORT) print(MySQL.from_conf) #<bound method MySQL.from_conf of <class '__main__.MySQL'>> conn=MySQL.from_conf() print(conn.host,conn.port) conn.from_conf() #对象也可以调用,但是默认传的第一个参数仍然是类
相关文章推荐
- Python开发基础-Day20继承实现原理、子类调用父类的方法、封装
- C#基础知识复习1代码规范-执行流程(c#)-面向对象-引用命名空间-封装-继承-访问修饰符-虚方法-静态成员-多态-抽象类等
- python基础之继承实现原理、子类调用父类的方法、封装
- Python基础(6)- 类和对象(使用、继承、派生、组合、接口、多态、封装、property、staticmethod、classmethod、反射、slots、上下文管理协议、元类)
- Py修行路 python基础 (十六)面向对象编程的 继承 多态与多态性 封装
- day33 序列类型,绑定方法,类方法,静态方法,封装继承和多态
- 2015/9/21 Python基础(17):绑定和方法调用
- python基础之多态与多态性、绑定方法和非绑定方法
- python 3全栈开发-面向对象之绑定方法(classmethod与staticmethod的区别)、多态、封装的特性property
- python基础教程---更加抽象,类,继承多态封装
- 黑马程序员-17-java基础-面向对象(3)-继承、抽象类、接口与多态
- Python基础-接口与归一化设计、抽象类、继承顺序、子类调用父类,多态与多态性
- java基础(2)-基础类型和语法(static、内部类、final、抽象类、接口、封装)(并将这些基础知识与java的三大特征关联(继承、多态、封装))
- JAVA基础必备(九)——继承,封装,多态,抽象类,接口
- 2.0 面向对象 类与实例(关键字)、封装、继承、多态(虚方法,抽象类,抽象方法,接口)
- Python基础-接口与归一化设计、抽象类、继承顺序、子类调用父类,多态与多态性
- Python开发基础-Day21多态与多态性、绑定方法和非绑定方法
- python基础之类的继承与派生、组合、接口与归一化设计、抽象类、子类中调用父类方法
- python基础----多态与多态性、super函数用法、继承原理
- python基础----继承与派生、组合、接口与归一化设计、抽象类、子类中调用父类方法