最近在实现python接口中遇到了一些小问题,解决后总结如下。

目的:在设计接口时,只暴露某个文件的特定方法。

例如:

t.py

import os
import sys def a():
pass def b():
pass def c():
pass

假设我们要开发的插件名为Shona,如果我们在设计插件时,在__init__.py文件中进行如下操作:

from t import *

如上import后,调用时可见方法:

Shona.t.a()
Shona.t.b()
Shona.t.c()
Shona.t.os
Shona.t.sys

如果我们只想暴露方法a和方法b,介绍两种方法如下:(实际应用中,看哪个方便哪个可以work用哪个,也可两者结合,实际上我自己用到的情况较为复杂,两者都有使用,在这里就不详细说了 Ψ( ̄(エ) ̄)Ψ )

1. 在t.py中添加如下代码:

__all__ = ['a', 'b']

# 写在文件头部或尾部即可,其他位置也可,注意是列表哦

这样做,是指定暴露哪些方法。

当然,我们更推荐如下import 方法:

from t import a
from t import b

然而,这些方式有时是不能完全满足需求的(这里各位在实践中便会晓得),可以使用下面那种较为暴力的方法。

2. 在__init__.py中添加如下代码

这个是观察tensorflow源码发现的,原来tensorflow也有这样子的问题:

del c
del os
del sys

这里就是说把不小心误引入的删掉,不暴露给用户。

以上就是本次小小的总结啦~ 祝大家开发愉快。

python接口设计中的__all__和del的更多相关文章

  1. PHP/TP5 接口设计中异常处理

    PHP提供 Exception 类来处理异常 new Exception('错误信息(默认为空)','错误代码(默认0)','异常链中前一个异常') 然后可以通过 e -> getMessage ...

  2. 【RESTful风格】软件接口设计中RESTful风格

    REST = Representational State Transfer 表述性状态转移,是一种软甲接口设计风格.总之就是一种风格 REST基于:HTTP.HTML.JSON.XML.URI 这些 ...

  3. API 接口设计中 Token 类型的分类与设计

    在实际的网站设计中我们经常会遇到用户数据的验证和加密的问题,如果实现单点,如果保证数据准确,如何放着重放,如何防止CSRF等等 其中,在所有的服务设计中,都不可避免的涉及到Token的设计. 目前,基 ...

  4. PHP调用Python接口过程中所遇到的问题

    在php调用python脚本时,首先把python相关组件安装完善.用Python命令检测运行脚本而不报错. 在调用接口的过程 1.没有打开的python脚本的权限 解决办法:把python脚本所在的 ...

  5. 一篇文章告诉你Python接口自动化测试中读取Text,Excel,Yaml文件的方法

    前言 不管是做Ui自动化和接口自动,代码和数据要分离,会用到Text,Excel,Yaml.今天讲讲如何读取文件数据 Python也可以读取ini文件,传送门 记住一点:测试的数据是不能写死在代码里面 ...

  6. python接口自动化中,注册接口随机生成手机号码

    如大家所知在注册接口中,手机号参数需要的是未注册的手机号,而在测试用例中,你写入的手机号不一定是未注册的.所以这时需要对注册接口中传入的手机号做处理.下面我就分享一个课程里面学到的一个处理手机号的py ...

  7. [翻译] Python 3.5中async/await的工作机制

    Python 3.5中async/await的工作机制 多处翻译出于自己理解,如有疑惑请参考原文 原文链接 身为Python核心开发组的成员,我对于这门语言的各种细节充满好奇.尽管我很清楚自己不可能对 ...

  8. Python接口自动化——soap协议传参的类型是ns0类型的要创建工厂方法纪要

    1:在Python接口自动化中,对于soap协议的xml的请求我们可以使用Suds Client来实现,其soap协议传参的类型基本上是有2种: 第一种是传参,不需要再创建啥, 第二种就是ns0类型的 ...

  9. Python中【__all__】的用法

    Python中[__all__]的用法 转:http://python-china.org/t/725 用 __all__ 暴露接口 Python 可以在模块级别暴露接口: __all__ = [&q ...

随机推荐

  1. OptimalSolution(9)--其他问题(1)

    一.从5随机到7及其扩展 题目1:给定一个等概率随机产生1~5的随机函数rand1to5: public int rand1To5() { return (int)(Math.random() * 5 ...

  2. (五)Unity插件生成

    1)新建空的AndroidStudio工程,但是新建过程时最小SDK版本要与unity一致,如下图所示,本次操作均为api16 2)创建Library,如下图所示,新建module,然后选择Andro ...

  3. js重点

    <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...

  4. Android 这 13 道 ContentProvider 面试题,你都会了吗?

    前言 作为 Android 的四大组件之一,ContentProvider 可以说是无处不在了. 但是对于我而言,开发过程中看似 ContentProvider 用得很娴熟,却一直没能形成一个完整的体 ...

  5. 中文¥乱码 vue js

    /** * * 中文¥格式化,返回格式化后的¥100.00 * @param {any} money */utils.formatCNY = function (money) { let format ...

  6. 一道国外前端面试题引发的Coding...

    刚刚看到CSDN微信公众号一篇文章,关于国外程序员面试前端遇到的一道测试题,有点意思,遂写了下代码,并记录一下~ 题目是这样的: ['Tokyo', 'London', 'Rome', 'Donlon ...

  7. MYSQL5.7修改密码强度策略

    ---恢复内容开始--- 在MySQL5.6.6之后,ORACLE更新了mysql密码强度必须要使用大小写数字符号来设置密码,但是有时候这样还是很不方便的.所以记录一篇如何修改mysql密码强度的博文 ...

  8. Eclipse SVN插件的帐号、密码修改

    Eclipse的SVN插件Subclipse做得很好,在svn操作方面提供了很强大丰富的功能.但到目前为止,该插件对svn用户的概念极为淡薄,不但不能方便地切换用户,而且一旦用户的帐号.密码保存之后, ...

  9. 8*8LED点阵

    基础认识 1.5英寸LED点阵管数码管8*8红色16pin 有如下两种型号: 共阳1588BS 共阴1588AS 共阴1588AS 共阳1588BS 编程导向 共阴和共阳其编程思路基本类似,只是对应I ...

  10. 羞,Java 字符串拼接竟然有这么多姿势

    二哥,我今年大二,看你分享的<阿里巴巴 Java 开发手册>上有一段内容说:"循环体内,拼接字符串最好使用 StringBuilder 的 append 方法,而不是 + 号操作 ...