管理python模块的包。

modkit的Python项目详细描述


改装套件

管理python模块的包

安装

# released version
pip install modkit
# latest version
pip intall git+https://github.com/pwwanbg/modkit

用法

允许导入特定名称,即使使用from ... import *

mymodule.py

frommodkitimportModkitmodkit=Modkit()modkit.exports('a','b')a=1b=2c=3

尝试导入此模块:

importmymoduleasmmmm.a# 1mm.b# 2mm.c# NameNotImportable
frommymoduleimport*a# 1b# 2c# NameError# NameNotImportablefrommymoduleimportc

禁止使用某些名称

mymodule.py

frommodkitimportModkitmodkit=Modkit()modkit.ban('a')a=1
importmymoduleasmmmm.a# NameBannedFromImport# NameBannedFromImportfrommymoduleimporta

别名

mymodule.py

frommodkitimportModkitmodkit=Modkit()modkit.alias('some_internal_wired_name','a')some_internal_wired_name=1
frommymoduleimportaa# 1

动态导入名称

mymodule.py

frommodkitimportModkitmodkit=Modkit()defdelegate(name):ifname=='a':return1ifname=='b':return2ifname=='c':returnlambda:3modkit.delegate(delegate)
frommymoduleimporta,b,ca# 1b# 2c()# 3# NameBannedFromImportfrommymoduleimportdelegate# if you want to reuse it# mymodule.modkit.unban('delegate')

modkit具有名为_modkit_delegate的保留委托函数。在模块中定义了这个函数后,就不必调用modkit.delegate

mymodule.py

importmodkitmodkit.Modkit()def_modkit_delegate(name):ifname=='a':return1ifname=='b':return2ifname=='c':returnlambda:3# nothing needs to do

然后您可以从mymodule导入a、b和c:

frommymoduleimporta,b,c

基于当前模块生成新模块

mymodule.py

importmodkitmodkit.Modkit()A=1def_modkit_call(module,a):setattr(module,'A',2)returnmodule
importmymoduleA# 1mymodule2=mymodule(2)mymodule2.A# 2frommymodule2importAA# 2frommymoduleimportAA# 1

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
从类访问属性时发生java编译错误   性能更好的Java序列化替代方案   java EhCache Spring XML集成命名空间   java如何使用表达式在JSP中检索新生成的图像   Java neo4j,REST和内存   java如何在mouseListener中删除和创建对象?   java在Hibernate中使用预定义前缀填充Id列   java无法从Elastic Beanstalk连接到Amazon SimpleDB   多线程通过单击JavaSwing中的按钮创建具有新名称的类的新对象   java如何在Kotlin中实现Memento模式   Android系列。对java进行排序。lang.NullPointerException   方法中的java重载构造函数内部类