#_*_ coding:utf-8 _*_
#知识点:接口的定义和抽象类以及抽象方法‘‘‘
1、抽象类式啥?
抽象类加上抽象方法就等于接口2、接口的定义
含义1、别人给你暴露一个URL,然后调用这个URL
含义2、定义一个规范,不写具体实现,按照这个规范去实现相关功能,抽象类就是属于这种
‘‘‘from abc import ABCMeta, abstractmethod#定义一个抽象类
class Alert:
__metaclass__ = ABCMeta
@abstractmethod
def Send(self):pass #抽...
接口继承也叫做程序的归一化设计,这种东西也有人叫它抽象类。那么什么又是抽象类呢?抽象类这种东西,只能被继承,不可以被实例化。如果说一个类是从一堆对象中抽取出来的,那么一个抽象类,就是从一堆类中抽取出来的。简单的说,抽象类与普通类最大的不同之处就是,抽象类中的方法都试抽象的,没有办法实现具体的功能,这种抽象类不能生成对象,只可以被继承,但是,继承了这个抽象类的子类,必须去实现抽象类所抽象出来的方法!...
Python抽象类在Python中抽象类只能被继承,不能被实例化。并且,抽象类中只有抽象方法和普通方法。定义抽象类和抽象方法Python的抽象类的定义需要abc模块。(= =...)# 导入抽象类需要用到的库
from abc import ABCMeta, abstractmethodclass Person(metaclass=ABCMeta):"""使用元类(模板类)"""pname = "这是Person抽象类" # 可以定义属性# 定义抽象方法,抽象方法不需要方法体# 需要在方法前加@abstractmethod装饰器@abstractm...
多态1.什么是多态? 多态指的是同一种类型的事物,不同的形态。 2.多态的目的: “多态” 也称之为 “多态性”,目的是为了 在不知道对象具体类型的情况下,统一对象调用方法的规范(比如:名字)。 多态的表现 “形式之一” 就是继承: - 先抽象,再继承 父类: 定制一套统一的规范。(比如: 方法名统一) 子类: 遵循父类的统一的规范。(比如: 子类遵循父类方法名的统...
Python中方法的工作方式方法是存储在类属性中的函数,你可以用下面这种方式声明和访问一个函数 >>> class Pizza(object):... def __init__(self, size):... self.size = size... def get_size(self):... return self.size...>>> Pizza.get_size<unbound method Pizza.get_size> Python在这里说明了什么?Pizza类的属性get_size是unbound(未绑定的),这代表什么含义?我们调用一下就明白了: >>> Pizza...
1、程序设计原则:SOLIP SOLIP设计原则 1、单一责任原则(SRP) 一个对象对只应该为一个元素负责 2、开放封闭原则(OCP) 对扩展开放,修改封闭 3、里氏替换原则(LSP) 可以使用任何派生类替换基类 4、接口分离原则(ISP) 对于接口进行分类避免一个接口的方法过多 ...
这篇是《数据结构与算法Python语言描述》的笔记,但是大头在Python类机制和面向对象编程的说明上面。我也不知道该放什么分类了。。总之之前也没怎么认真接触过基于类而不是独立函数的Python编程,借着本次机会仔细学习一下。抽象数据类型 最开始的计算机语言,关注的都是如何更加有效率地计算,可以说其目的是计算层面的抽象。然而随着这个行业的不断发展,计算机不仅仅用于计算,开发也不仅只关注计算过程了,数据层面的抽象也...
6.1创建函数函数是可以调用(可能包含参数,也就是放在圆括号中的值),它执行某种行为并且返回一个值。一般来说,内建的callable函数可以用来判断函数是否可调用:>>> x=1>>> y=math.sqrt>>> callable(x)False>>> callable(y)True定义函数用def 语句:def fib(num): result=[0,1] for i in range(num-2): result.append(result[-2]+result[-1]) return result6.1.1记录函数给函数添加文档字符串:>>> def square(x):...
1from abc import ABCMeta, abstractmethod2 3class A(metaclass=ABCMeta): 称 A 为抽象类4 @abstractmethod5def test(self):pass test 为抽象方法, 必须由继承的子类实现具体功能 6 7 8class B(A):9pass1011 B() 只要创建类 B 的 对象, 就会报错TypeError: Can‘t instantiate abstract class B with abstract methods test python3,以后,新式类, 多继承,方法的查找顺序, 广度优先算法 1class A:2def test(self):3pr...
抽象工厂模式 内容:定义一个工厂类接口,让工厂子类来创建一系列相关或相互依赖的对象。例:生产一部手机,需要手机壳、CPU、操作系统三类对象进行组装,其中每类对象都有不同的种类。对每个具体工厂,分别生产一部手机所需要的三个对象。相比工厂方法模式,抽象工厂模式中的每个具体工厂都生产一套产品。角色:抽象工厂角色(Creator)具体工厂角色(Concrete Creator)抽象产品角色(Product)具体产品角色(Concrete Product)...
import abc#定义一个说话的方式接口类,只能被继承 不能被实例化class Speak(abc.ABC):#@abc.abstractmethod @abc.abstractmethoddef to_speak(self):pass#定义学生说话的类class Student(Speak):def to_speak(self):print("老师好")#定义老师说话的类class Teacher(Speak):def to_speak(self):print("同学们好")#类的实现
s = Student()
t = Teacher()
#函数实现s.to_speak()
t.to_speak()
sss=Speak()try:passexcept TypeErro...
abc模块 / abc Module在定义抽象方法时,为了在初始化阶段就检测是否对抽象方法进行了重定义,Python 提供了 abc 模块。 1from abc import ABCMeta, abstractmethod2 3# Generate a abstract base obj - MyABC 4class MyABC(metaclass=ABCMeta):5#__metaclass__ = ABCMeta 6 @abstractmethod7def run(self):8pass 910class Foo(MyABC):
11def run(self):
12print(‘run‘)
1314 f = Foo()
15 f.run()第 4 行:...
接口类与抽像类在python中,并没有接口类这种东西,即便不通过专门的模块定义接口,我们也应该有一些基本的概念编程思想 归一化设计: 1.接口类 不实现具体的方法,并且可以多继承 2.抽象类 可以做一些基础实现,并且不推荐多继承编程的几类原则:开放封闭原则:对扩展示开放的,对修改是封闭的依赖倒置原则:高层模块不应该依赖低层模块,二者都应该依赖其抽象;抽象不应该应该依赖细节;细节应该依赖抽象。换言之,要针对接口编...
代理模式
Proxy模式是一种常用的设计模式,它主要用来通过一个对象(比如B)给一个对象(比如A) 提供'代理'的方式方式访问。比如一个对象不方便直接引用,代理就在这个对象和访问者之间做了中介
你先设想:一个对象提供rgb三种颜色值,我想获得一个对象的rgb三种颜色,但是我不想让你获得蓝色属性,怎么办?class Proxy(object):def __init__(self, subject):self.__subject = subject# 代理其实本质上就是属性的委托def __getattr__(...
抽象工厂模式:提供一个创建一系列相关或相互依赖对象的接口,而无需指定它们具体的类。
优点:易于交换“产品系列”,只要更改相应的工厂即可。
缺点:建立产品的时候很繁琐,需要增加和修改很多东西。
优化1:为了避免客户端有过多的逻辑判断,可以封装出一个简单工厂类来生成产品类。
优化2:为了减少简单工厂类里面的逻辑判断,可以采用“反射”机制,直接根据外部的配置文件读取出需要使用产品类的信息。#encoding=utf-8
#
...