Python面向对象之接口类(抽象类):就是制定一个规范。

比如定义了一个接口类(抽象类)(他们是不可以进行实例化的,这就是他为什么是制定一个规范的原因)。
他的定义是需要abc模块,要变的就是他的方法,比如下面的pay方法,
定义好一个抽象类(接口类)Payment,他用装饰器@abstractmethod将pay方法装饰
这样,其他类如果都继承了Payment方法,其他类中就都需要有一个pay方法,如果没有就会报错。 就好比,起初我没有微信支付类,但是如果后续项目需要加微信支付此功能,支付的方法我可以起各种名字。
但是为了统一支付接口,我们继承抽象类Payment后,我们的支付接口名就必须用pay. 这就是接口类(抽象类的用途) from abc import ABCMeta, abstractmethod class Payment(metaclass=ABCMeta): # 抽象类(接口类)
@abstractmethod
def pay(self): # 制定一个规范
pass class Alipay(Payment):
def __init__(self, money):
self.money = money def pay(self):
print('使用支付宝花了%s钱' % (self.money,)) class Jdpay(Payment):
def __init__(self, money):
self.money = money def pay(self):
print('使用京东支付了%s钱' % (self.money,)) class Wechatpay(Payment):
def __init__(self, money):
self.money = money def pay(self):
print('使用微信支付了%s钱' % (self.money,)) w1 = Wechatpay(200)
a1 = Alipay(150)
j1 = Jdpay(100)
w1.pay()
a1.pay()
j1.pay()

Python面向对象之接口类(抽象类)的更多相关文章

  1. python笔记5 接口类抽象类 封装 反射 设计模式 模块 :random随机数 josn shelve持久化存储

    接口类抽象类 接口类:接口类就是制定一个规则,让其他人按照我的规则去写程序. #!/usr/bin/env python from abc import ABCMeta,abstractmethod ...

  2. python开发面向对象基础:接口类&抽象类&多态&钻石继承

    一,接口类 继承有两种用途: 一:继承基类的方法,并且做出自己的改变或者扩展(代码重用) 二:声明某个子类兼容于某基类,定义一个接口类Interface,接口类中定义了一些接口名(就是函数名)且并未实 ...

  3. day27 多态 多继承 接口类 抽象类

    简单来说:多态就是指一个相同的方法名在不同的对象调用的时候实现一样或者不一样的方法实例1: 动物类有个方法 "嚎叫" 狗类也有个方法 "嚎叫" 猫类继承了动物类 ...

  4. Python面向对象06 /元类type、反射、函数与类的区别、特殊的双下方法

    Python面向对象06 /元类type.反射.函数与类的区别.特殊的双下方法 目录 Python面向对象06 /元类type.反射.函数与类的区别.特殊的双下方法 1. 元类type 2. 反射 3 ...

  5. Python_015(面向对象(接口类,抽象类,多态,封装)

    一.抽象类与接口类 1.抽象类:抽象即类似或者说比较像的部分,继承描述的是父类与子类的一种关系,要找出这种关系,必须先抽象再继承; a:抽象分成两个层次: 1)由对象->类:将两个有相似地方的对 ...

  6. day 25 面向对象之接口、抽象类、多态、异常处理、反射、断言

    复习 '''继承​1.父类:在类后()中写父类们class A:passclass B:passclass C(A, B):pass​2.属性查找顺序:自己 -> ()左侧的父类 -> 依 ...

  7. Python面向对象总结及类与正则表达式

    Python3 面向对象 一丶面向对象技术简介 类(Class): 用来描述具有相同的属性和方法的对象的集合.它定义了该集合中每个对象所共有的属性和方法.对象是类的实例. 方法:类中定义的函数. 类变 ...

  8. Java学习笔记(六):面向对象、接口和抽象类

    类和对象 Java是一门面向对象的语言,下面我们来了解一下Java中的面向对象. 方法和重载 Java中的方法格式如下: 访问修饰符 返回值类型 方法名(参数){ 方法主体 } Java的方法支持重载 ...

  9. Python面向对象编程、类

    一.面向对象编程 面向对象--Object Oriented Programming,简称oop,是一种程序设计思想.在说面向对象之前,先说一下什么是编程范式,编程范式你按照什么方式来去编程,去实现一 ...

随机推荐

  1. 7.8 LZW压缩的实现

    7-10 lzw.c #include <stdlib.h> #include <stdio.h> #define BITS 12 //每个数据项的二进制位数 #define ...

  2. python增删改查zabbix主机等

    摘自: http://www.jianshu.com/p/e087cace8ddf 一.API简介 Zabbix API是在1.8版本中开始引进并且已经被广泛应用.所有的Zabbix移动客户端都是基于 ...

  3. laravel基础课程---7、文件处理、闪存、cookie(cookie原理和使用场景)

    laravel基础课程---7.文件处理.闪存.cookie(cookie原理和使用场景) 一.总结 一句话总结: 页面请求服务器的时候是把这个页面中所有的cookie都带上了的,cookie里面也存 ...

  4. listen 63

    Danger Explainers Convince Kids Better Than Do Edict Issuers An eight-year-old may view a hammer as ...

  5. OpenCV——PS滤镜之 波浪效果 wave

    // define head function #ifndef PS_ALGORITHM_H_INCLUDED #define PS_ALGORITHM_H_INCLUDED #include < ...

  6. BZOJ-3940:Censoring(AC自动机裸题)

    Farmer John has purchased a subscription to Good Hooveskeeping magazine for his cows, so they have p ...

  7. java-03 方法

    #############练习###################### 1.键盘录入乘法表 import java.util.Scanner; public class PrintNN { pub ...

  8. bzoj 4003: 城池攻占 左偏树

    题目大意 http://www.lydsy.com/JudgeOnline/problem.php?id=4003 题解 一开始看漏条件了 题目保证当占领城池可以使攻击力乘上\(v_i\)时,一定有\ ...

  9. [转] 编写高效的 CSS 选择器

    高效的CSS已经不是一个新的话题了,也不是我一个非得重拾的话题,但它却是我在Sky公司工作之时,所感兴趣的,关注已久的话题. 有很多人都忘记了,或在简单的说没有意识到,CSS在我们手中,既能很高效,也 ...

  10. Oracle查询24小时制的时间格式

    select to_date('2016-11-11 13:42:27', 'yyyy/mm/dd hh24:mi:ss') from dual.