用python写接口所学到的点

本文探讨了Python接口开发中的两个关键概念:抽象类和配置文件。通过抽象类定义基类和接口方法,子类进行实现。利用`abc`模块创建抽象类,`abstractmethod`定义抽象方法。配置文件采用JSON格式,通过`json`模块加载。同时,文章指出,即使不使用`super()`调用父类方法,只要保持方法名和参数一致,也可视为实现了抽象方法。
摘要由CSDN通过智能技术生成

一、抽象类

用抽象类定义基类,抽象类中定义相应的接口方法,子类继承实现。 注意:抽象类不可被实例化

使用abc模块下的ABCMeta定义一个抽象类。

abstractmethod来定义一个抽象方法,其抽象方法必须在子类中实现。如果在非抽象类好像可以用 raise NotImplementedError

from abc import ABCMeta, abstractmethod

class BaseClass(metaclass=ABCMeta):
    def __init__(self, msg):
        print("create baseclass!")
        print(msg)
        print('----------')

    @abstractmethod
    def fn(self):
        print('implement')

然后使用继承的方法来具体化,还有一种是注册,我不太熟悉

class ChildClass(BaseClass):
    def __init__(self, msg):
        super().__init__(msg)

    def fn(self):
        super().fn()
        print('OK')


test = ChildClass('hello')
test.fn()

运行结果:

assert断言  -  判断输入文件路径是否存在,不存在则停止运行。img为文件路径,“”里面为打印的文字警告。

assert os.path.exists(img), "Warning: The file path dose not exist!"

二、配置文件

为了把相关配置写进配置文件,配置文件采用json文件。python中json模块可以直接load.

@classmethod
    def load(cls, cfg_fp):
        with open(cfg_fp) as file:
            cfg = json.load(file)
        cfg = cls(**cfg['nn_params'])
        return cfg

classmethod是表示类方法,在类没有实例化时可以直接调用该方法。在上面代码中用load读取了配置文件,然后用文件内的参数,实例化了一个对象。并把获得的对象返回。

发现一个问题,当父类中的方法为抽象方法时,在其子类中必须将其实现。但不一定必须要在子类方法中用super调用父类中相应的方法,只需要方法名字和参数一致即是实现。

查阅资源链接:

NotImplementedError   https://blog.csdn.net/grey_csdn/article/details/77074707

抽象类   https://www.cnblogs.com/weihengblog/p/8528967.html

元类,讲的很好但是没用到: https://cloud.tencent.com/developer/article/1115789

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值