用于创建和导入虚拟模块的Python包。
项目描述
virtualmod
用于创建和导入虚拟模块的Python包。
安装
pip install virtualmod
示例
模块对象
使用virtualmod
手动创建和注册模块。
import virtualmod
# Create a new empty virtual module
module = virtualmod.create_module('custom_module')
# Add attribute to module
module.key = 'value'
# Use decorator to add a function to the module
# NOTE: You can use `add_to_module(module, name='new_name')` to override the module attribute name
@virtualmod.add_to_module(module)
def module_function(name):
print('Hello', name)
# Use decorator to add a class to the module
@virtualmod.add_to_module(module)
class ModuleClass:
pass
# Import and use our virtual module
import custom_module
print('Key:', custom_module.key)
custom_module.module_function('virtualmod')
print(custom_module.ModuleClass())
类定义
virtualmod
还提供了使用类定义来定义虚拟模块的能力。
import virtualmod
# Use class definition to define our virtual module "custom_module"
class CustomModule(virtualmod.VirtualModule):
# Define the module's name (would be "CustomModule" otherwise)
__module_name__ = 'custom_module'
# Add an attribute
key = 'value'
# Add a function
# NOTE: There is no `cls` or `self`
def module_function(name):
print('Hello', name)
# Add a class to the module
class ModuleClass:
pass
# Import and use our virtual module
import custom_module
print('Key:', custom_module.key)
custom_module.module_function('virtualmod')
print(custom_module.ModuleClass())
覆盖现有模块
virtualmod
的模块查找器在标准内置查找器之前注册。这意味着如果您将模块注册为现有模块的名称,则您的模块将首先被找到和加载。
import virtualmod
# Create a virtual module under the name "socket"
my_socket = virtualmod.create_module('socket')
# Import socket module
import socket
# Test if the loaded socket module is the one we created
print(socket is my_socket)
项目详情
下载文件
下载适用于您的平台的文件。如果您不确定选择哪个,请了解更多关于 安装包 的信息。
源分布
virtualmod-1.0.0.tar.gz (3.8 kB 查看哈希值)
构建分布
virtualmod-1.0.0-py3-none-any.whl (3.0 kB 查看哈希值)