python接口的进一步学习

参考:https://www.cnblogs.com/xinsiwei18/p/5937952.html
首先,我们必须明确的一点是:python里无接口类型,定义接口只是一个人为规定,在编程过程自我约束
python中的接口(方法不能写任何具体实现),java中的接口,抽象类(包含接口和正常方法的一个类)

python的类是可以写任意个方法的
定义一个接口对继承类进行约束,接口里有什么方法,继承类就必须有什么方法,接口中不能任何功能代码

class Interface:

    def f1(self):
        '''
        to do something
        :return:
        '''

class Something(Interface):

    def f1(self):
        print('to do something...')

    def f2(self):
        print('to do other..')

在其他的语言里,比如Java,继承类没有重写接口方法是会报错的,而在python里不会,就是因为python没这个类型,所以只是在我们编程过程的一个规定,以I开头的类视为接口

class IOrderRepository:

    def fetch_one_by(self,nid):
        raise Exception('子类中必须实现该方法')

class Something(IOrderRepository):

    def fet_one_by(self,nid):
        print('查查查数据....')

抽象类,抽象方法
抽象类,可以说是类和接口的混合体,既可以定义常规方法,也可以约束子类的方法(抽象方法)

import abc

#抽象类
class Foo(metaclass=abc.ABCMeta):

    def f1(self): #普通的方法
        print('f1')

    #抽象方法
    @abc.abstractmethod
    def f2(self):
        '''
        打印f2
        '''

class Bar(Foo):

    def f2(self):
        print('f2')

    def f3(self):
        print('f3')

b = Bar()
b.f1()
b.f2()
b.f3()

依赖注入:
如果要熟练应用依赖注入,我还要弄懂一个概念,那就是组合:组合的目的就是解耦,减少依赖性,原来以某个具体的值或对象传入到内部改成以参数的形式传入;
个人理解:原来以某个具体的值或对象传入是针对具体的,后面改为参数类似于接口把它们规范抽象化了;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值