zoukankan      html  css  js  c++  java
  • python接口设计中的__all__和del

    最近在实现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

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

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

  • 相关阅读:
    nohup 忽略 nohup.out 输出
    elementui 发送时间格式到 gin 后端问题
    在 Ubuntu 下使用 Puppeteer 时无法加载类库 libX11-xcb.so.1
    获取注解上的注解
    tomcat 远程 debug
    使用pytorch-lightning漂亮地进行深度学习研究(转)
    CTR预估模型发展历程(转)
    pytorch重要函数介绍
    Dataset和Dataloader
    推荐系统中的ID特征为什么有用?
  • 原文地址:https://www.cnblogs.com/shona/p/11969758.html
Copyright © 2011-2022 走看看