归一化设计

#继承同时具有两种含义
# 1.继承基类的方法,并且做出自己的改变或者扩展
# 2.声明某个子类兼容于某个基类,定义一个接口类,子类继承接口类,并且实现接口中定义的方法. # 实践中,继承的第一种含义意义并不很大,甚至常常是有害的,因为它使得子类与基类出现强耦合.
# 继承的第二种含义非常重要,它又叫"接口继承"
# 接口继承是指上是要求做出一个良好的抽象,这个抽象规定了一个兼容接口,使得外部调用者无需关心具体细节,可一视同仁的处理实现了特定接口的所有对象
# 这个程序设计上叫做归一化. # 归一化使得高层的外部使用者可以不加区分的处理所有接口兼容的对象集合
# 就好像linux的泛文件概念一样,所有东西都可以当做文件处理,不必关心它是内存、磁盘、网络还是屏幕 # 具体示例:(导入模块)
import abc #写一个接口类,定义了两个函数方法,将两个函数方法修饰(为了规范子类定义)
class All_file(metaclass=abc.ABCMeta): @abc.abstractmethod
def read(self):
pass @abc.abstractmethod
def write(self):
pass class Disk(All_file):
def read(self):
pass
def write(self):
pass class Mum(All_file):
def read(self):
pass #Disk()子类 将父类的规定的函数方法构造了
A = Disk()
#Mum()zi子类 只将父类的read()方法构造了
B = Mum() #这是B就被报一下错误!缺一个write方法.
#TypeError: Can't instantiate abstract class Mum with abstract methods write

python - class类(归一化设计)的更多相关文章

  1. Python面向对象 --- 类的设计和常见的内置方法

    面向对象:一种基于面向过程的新的编程思想.也就是说面向对象是将功能等通过对象来实现,将功能封装进对象之中,让对象去实现具体的细节:这种思想是将数据作为第一位,而方法或者说是算法作为其次,这是对数据一种 ...

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

    一.什么是继承                                                                          继承是一种创建新的类的方式,在pyth ...

  3. Python基础-接口与归一化设计、抽象类、继承顺序、子类调用父类,多态与多态性

    一.接口与归一化设计 Java接口是一系列方法的声明,是一些方法特征的集合,一个接口只有方法的特征没有方法的实现,因此这些方法可以在不同的地方被不同的类实现,而这些实现可以具有不同的行为(功能). 由 ...

  4. python基础--接口与归一化设计、封装、异常、网络编程

    1 接口与归一化设计 1.1 归一化概念: 归一化的好处: 1.归一化让使用者无需关心对象的类是什么,只需要知道这些对象都具备某些功能就可以了,这极大降低了使用者的使用难度. 2.归一化使得高层的外部 ...

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

    一.什么是继承 继承是一种创建新的类的方式,新建的类可以继承自一个或者多个父类,原始类称为基类或超类,新建的类称为派生类或子类. 派生:子类继承了父类的属性,然后衍生出自己新的属性,如果子类衍生出的新 ...

  6. Python 3 接口与归一化设计

    一.接口与归一化设计: 1.归一化让使用者无需关心对象的类是什么,只需要知道这些对象都具备某些功能就可以了,这极大地降低了使用者的使用难度. 2.归一化使得高层的外部使用者可以不加区分的处理所有接口兼 ...

  7. python面向对象类的约束和设计的统一化规范

    .封装 定义:将一些东西内容封存到一个地方,你还可以再取出, 类设置静态属性,设置一些方法 对象可以在其对象空间中封装一些属性 2.多态 定义:一个事物的多种形态 就想a可以是一个字符串,可以是一个列 ...

  8. python - class类 (七) 三大特性 - 封装 结尾

    封装: # 封装 #第一层,类就是麻袋,本身就是一种封装 #第二层,类中定义私有的,至在类的内部使用,外部无法访问 #第三层,封装在于明确区分内外,使得类实现者可以修改封装内的东西二不影响外部调用者 ...

  9. [ python ] 接口类和抽象类

    接口类 继承有两种用途:1. 继承基类的方法,并且做出自己的改变或者扩展(代码重用)2. 申明某个子类兼容于某基类,定义一个接口类interface,接口类定义了一些接口名且未实现接口的功能,子类继承 ...

随机推荐

  1. AC自动机-HDU2896-模板题

    http://acm.hdu.edu.cn/showproblem.php?pid=2896 另一道AC自动机的模板题,不过这题需要记录一下具体的匹配情况. /*------------------- ...

  2. MT【63】证明不是周期函数

    证明$f(x)=sinx^2$不是周期函数. 反证:假设是周期函数,周期为$T,T>0$. $$f(0)=f(T)\Rightarrow sinT^2=0\Rightarrow T^2=k_1\ ...

  3. install nagios pnp4nagios on centos 6

    安装配置Apache.PHP(忽略此次安装步骤) 安装nagiosrpm -Uvh http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release ...

  4. luogu2607/bzoj1040 [ZJOI2008]骑士 (基环树形dp)

    N个点,每个点发出一条边,那么这个图的形状一定是一个基环树森林(如果有重边就会出现森林) 那我做f[0][x]和f[1][x]分别表示对于x子树,x这个点选还是不选所带来的最大价值 然后就变成了这好几 ...

  5. luogu3203 弹飞绵羊 (LCT)

    新建一个N+1的点,飞出去的连到这个上,记size,每次统计x和N+1的链长就可以. 别忘了编号是从0开始的 #include<cstdio> #include<cstring> ...

  6. 使用babel将ES6编译成ES5

    现在ES6已经非常成熟了,我的需求很明确,就是只需要将ES6编译成ES5. 项目目录为 借鉴的博客链接为https://blog.csdn.net/suwu150/article/details/77 ...

  7. MyEclipse新建工作空间后的配置详细步骤

    1. General --> Workspace --> UTF-8 2. General --> Editors -->File  Associations --> J ...

  8. linux command ------ tar

    -c: compress archives -x:decompress archives -t:check archives -z:whether it has the attribute of gz ...

  9. Kubernetes Pv & Pvc

    Kubernetes PV & pvc 介绍 PersistentVolume(pv)和PersistentVolumeClaim(pvc)是k8s提供的两种API资源,用于抽象存储细节.管理 ...

  10. Java 读取文件的内容

    Java 读取文件的内容 1) CLASS_NAME: 换成自己真实的类名 2) /page/test.json: 换成自己真实的page 3) FileUtils: 来自于org.apache.co ...