依赖注入和控制和库的反转,用于简单的服务处理
项目描述
IOCynergy
使用依赖注入的 IOC 容器的 Python 模块(使用 python 3+ 类型提示,支持到 Python3.7)
初始化服务的简单方法
from cynergy import container
class TestClass:
pass
class ParentClass:
def __init__(self, test_class: TestClass):
self.test_class = test_class
instance = container.get(ParentClass) # Returns TestClass initialized as singleton
print(type(instance)) # ParentClass
print(type(instance.test_class)) # TestClass
从任何服务访问您的配置
from cynergy import container
from cynergy.config import Config, MemoryConfig
from cynergy.attributes import arguments
@arguments(db=Config('db_name'),host=Config('hostname'))
class DbConnector:
def __init__(self, db: str, host: str):
self.db = db
self.host = host
container.initialize(MemoryConfig({
"db_name": "LocalDbName",
"hostname": "localhost"
}))
instance = container.get(DbConnector)
print(instance.db) # LocalDbName
print(instance.host) # localhost
** 您可以实现自己的配置提供程序(例如,您可以创建 DbConfigProvider 从数据库提供您的设置)
手动注册特殊类型
from cynergy import container
class Original:
pass
class Other:
pass
container.register_class(Original, Other)
instance = container.get(Original)
print(type(instance)) # Other
注册服务集合
from typing import List
from cynergy import container
class HandlerBase:
pass
class SomeHandler1(HandlerBase):
pass
class SomeHandler2(HandlerBase):
pass
class SomeService:
def __init__(self, handlers: List[HandlerBase]):
self.handlers = handlers
container.register_many(HandlerBase, [SomeHandler1, SomeHandler2])
instance = container.get(SomeService)
print(type(instance.handlers)) # list
print(type(instance.handlers[0])) # SomeHandler1
print(type(instance.handlers[1])) # SomeHandler2
项目详情
下载文件
下载适用于您平台的文件。如果您不确定要选择哪个,请了解有关安装包的更多信息。
源分布
cynergy-1.2.0.tar.gz
(7.3 kB
查看哈希)
内置分布
cynergy-1.2.0-py3-none-any.whl
(7.3 kB
查看哈希)