python中的接口

什么是接口 ?

接口只是定义了一些方法,而没有去实现,多用于程序设计时,只是设计需要有什么样的功能,但是并没有实现任何功能,这些功能需要被另一个类(B)继承后,由 类B去实现其中的某个功能或全部功能。

个人的理解,多用于协作开发时,有不同的人在不同的类中实现接口中的各个方法。

在python中接口由抽象类和抽象方法去实现,接口是不能被实例化的,只能被别的类继承去实现相应的功能。

个人觉得接口在python中并没有那么重要,因为如果要继承接口,需要把其中的每个方法全部实现,否则会报编译错误,还不如直接定义一个class,其中的方法实现全部为pass,让子类重写这些函数。

当然如果有强制要求,必须所有的实现类都必须按照接口中的定义写的话,就必须要用接口。

方法一:用抽象类和抽象函数实现方法

#抽象类加抽象方法就等于面向对象编程中的接口
from abc import ABCMeta,abstractmethod

class interface(object):
    __metaclass__ = ABCMeta #指定这是一个抽象类
    @abstractmethod  #抽象方法
    def Lee(self):
        pass

    def Marlon(self):
        pass

class RelalizeInterfaceLee(interface):#必须实现interface中的所有函数,否则会编译错误
    def __init__(self):
        print '这是接口interface的实现'
    def Lee(self):
        print '实现Lee功能'
    def Marlon(self):
        pass   

class RelalizeInterfaceMarlon(interface): #必须实现interface中的所有函数,否则会编译错误
    def __init__(self):
        print '这是接口interface的实现'
    def Lee(self):
        pass
    def Marlon(self):
        print "实现Marlon功能"
 

方法二:用普通类定义接口,

class interface(object): #假设这就是一个接口,接口名可以随意定义,所有的子类不需要实现在这个类中的函数
    def Lee(self):,
        pass

    def Marlon(self):
        pass

class Realaize_interface(interface):
    def __init__(self):
        pass
    def Lee(self):
        print "实现接口中的Lee函数"

class Realaize_interface2(interface):
    def __init__(self):
        pass
    def Marlon(self):
        print "实现接口中的Marlon函数"

obj=Realaize_interface()
obj.Lee()

obj=Realaize_interface2()
obj.Marlon()
时间: 2024-08-09 05:03:58

python中的接口的相关文章

python中的接口和依赖注入

首先,我们必须明确的一点是:python里无接口类型,定义接口只是一个人为规定,在编程过程自我约束 python的类是可以写任意个方法的 定义一个接口对继承类进行约束,接口里有什么方法,继承类就必须有什么方法,接口中不能任何功能代码 class Interface: def f1(self): ''' to do something :return: ''' class Something(Interface): def f1(self): print('to do something...')

Python中的接口类与抽象类

接口类 面向对象中的继承有两种用途:1)可以通过继承做到代码重用,并完成扩展:2)接口继承.所谓的接口继承就是定义一个接口类 Interface,接口类中定义了一些接口(就是函数,但这些函数都没有具体的实现),子类继承接口类,并且实现接口中的功能~ 接口继承可以使得外部调用者无需关心具体的实现细节,可用相同的方式处理继承了特定接口的所有对象,这里的前提是接口类需要做出一个很好的抽象~ class Operate_database(): # 接口类 def query(self, sql): ra

python中模拟接口开发

# 模拟没有开发好的接口# pip install flaskimport flaskimport json server = flask.Flask(__name__) @server.route('/login') # 浏览器访问的名称def welcome(): data = {'code': 0, 'msg': '登录 成功', 'session_id': '123456'} return json.dumps(data, ensure_ascii=False) @server.rout

在python中使用接口

#运行环境:python3.5 from abc import ABCMeta,abstractmethod class IQueue(object,metaclass=ABCMeta):#设置为抽象类 @abstractmethod #设置为抽象方法,如果子类没有实现此方法,将会报错 def push(self): pass @abstractmethod def pop(self): pass class RedisQueue(IQueue): def __init__(self): pri

python中API接口是什么

首先还是举个例子:你要去银行取钱的例子.如果没有银行柜员给你服务,你自己去存钱,你需要做的事情有: 一,打开金库的大门 二,把钱放进去 三,记账,存放了多少钱 四,离开. 问题解决了,但是其中有不少问题.每个人都这样做,四个步骤,有的人打不开金库的大门,有的人不识字,不会记账.而且也会记错. 怎么办呢,银行雇佣一个银行柜员,她的名字叫小花,就行了.这个银行柜员对这个四个步骤非常清楚.你现在需要做的事情有: 一,把钱交给银行柜员小花 二,离开 怎么样,效率大大提高,还不容易出错. 这个银行柜员的作

关于Python中的yield

关于Python中的yield http://www.cnblogs.com/tqsummer/archive/2010/12/27/1917927.html http://www.ibm.com/developerworks/cn/opensource/os-cn-python-yield/ 一.迭代器(iterator) 在Python中,for循环可以用于Python中的任何类型,包括列表.元祖等等,实际上,for循环可用于任何“可迭代对象”,这其实就是迭代器 迭代器是一个实现了迭代器协议

XGBoost:在Python中使用XGBoost

原文:http://blog.csdn.net/zc02051126/article/details/46771793 在Python中使用XGBoost 下面将介绍XGBoost的Python模块,内容如下: * 编译及导入Python模块 * 数据接口 * 参数设置 * 训练模型l * 提前终止程序 * 预测 A walk through python example for UCI Mushroom dataset is provided. 安装 首先安装XGBoost的C++版本,然后进

【Mininet】如何在python中获得Mininet中的主机名称

毕设中遇到一个问题是需要在输出的结果文件以当前运行脚本的主机命名.本以为可以轻易的使用 hostname 或者python中的 socket.gethostname() 方法来获取,但是运行后发现并非如此: mininet> h19 hostname ubuntu 即使在mininet环境下,使用linux的 hostname 命令返回的也是本地主机的主机名称,而 socket.gethostname() 也同样. 我的解决方法是通过解析 ifconfig 命令的输出来得到当前主机名,代码如下:

快速入门Python中文件读写IO是如何来操作外部数据的?

读写文件是最常见的IO操作.Python内置了读写文件的函数,用法和C是兼容的. 读写文件前,我们先必须了解一下,在磁盘上读写文件的功能都是由操作系统提供的,现代操作系统不允许普通的程序直接操作磁盘,所以,读写文件就是请求操作系统打开一个文件对象(通常称为文件描述符),然后,通过操作系统提供的接口从这个文件对象中读取数据(读文件),或者把数据写入这个文件对象(写文件). 读文件 要以读文件的模式打开一个文件对象,使用Python内置的open()函数,传入文件名和标示符 >>> f =