一个非常简单的python依赖注入程序

pychkari的Python项目详细描述


皮奇卡里

Build Status

一个非常简单的python依赖注入程序

安装

使用PIP!

pip install pychkari

概述

pychkari(发音为peach-kaa-ree)是一个简单的python依赖注入程序。它的目的是成为一个无需大惊小怪的库,依赖于尽可能少的包,并且只起作用。

这个例子应该让我们开始!

# Class definitions for reference

class A:
    def __init__(self, 
                 depOne,                    # casing support
                 second_dep: "DepTwo",      # annotations support
                 const_dep=3):              # not a dependency
        self.dep1 = depOne
        self.dep2 = second_dep
        self.const_d = const_dep


class DepOne:
    def __init__(self):
        self.timestamp = datetime.now()


class DepTwo:
    def __init__(self):
        self.timestamp = datetime.now()


class B:
    def __init__(self, a, dep_one):
        self.a = a
        self.dep1 = dep_one


# registration

container = Container.instance()
container.register("MyAwesomeService", B)   # explicitly named registration
container.register_class(A)                 # service name "A" implicit
container.register_class(DepOne)            # service name "DepOne" implicit
container.register_class(DepTwo)            # service name "DepTwo" implicit

# instantiation

service = container.get("MyAwesomeService") # creates instance of "B" with dependencies injected

功能

重量轻

pychkari只有几千字节。它没有第三方依赖关系。把它放到你的项目中,然后继续运行。

零承诺

Pychkari不要求你更改代码。只要遵循常见的Python规范,您现有的代码就可以工作了!
没有花哨的注解,没有装饰,没有承诺。您可以自由地与任何其他框架混合和匹配。

此图表应说明如何解决依赖关系:

DependencyResolved Service Name
underscore_caseUnderscoreCase
camelCaseCamelCase
PascalCasePascalCase
my_Weird_caseMyWeirdCase
my_service:HttpClientHttpClient

可扩展

嗯,差不多吧!如果约定不满足复杂的命名方案,则可以通过注释依赖项使名称显式。
例如,client:"MyService"将注入并实例MyService,而不是client

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

推荐PyPI第三方库


热门话题
java如何定制springdata存储库方法名称?   html有没有办法将java应用程序或JApplet嵌入到网站中?   Jackson ObjectMapper将java从字符串序列化为JSON作为namevalue   java刷新JTable?   用Java程序分发用JavaDB制作的数据库   java Android如何启动新活动   当集合大小超过500.000时,java的处理速度会显著降低   在java的分层目录中的多个目录中查找相同的文件   java如何将ArrayList数据插入数据库   java如何修改此代码,使其时间复杂度为o(logn)或o(n),而不是o(n^2)   java面板(SimplePanel)中仅显示图像的前1/3(大约),   jakarta ee Java Bean和企业Java Bean之间的区别?   创建AWS Cloudfront自签名URL(java sdk)时出现amazon web服务错误   基于Jersey和Jackson查询参数的java动态属性过滤