在python中构建声明性配置的对象系统。

deconf的Python项目详细描述


deconf
==


在python中构建声明性配置的对象系统。


一个具有丰富(ish)关键字参数处理的类,包括
[显式处理所需参数](https://github.com/dustinlacewell/deconf-pass-through参数),
[declaration个参数依赖项(https://github.com/dustinlacewell/deconf依赖项参数)和
[基本类型检查](https://github.com/dustinlacewell/deconf类型检查参数)。


用"@parameter"装饰器装饰。这些
修饰方法都执行特定于该参数的处理。然后,
返回值被分配给相应命名的属性。



>;@parameter('foo')
>;>;def handle\u foo(self,value):
…返回值



传递参数:
——


只需装饰
一个传递的参数方法,"value"将按原样使用。



>;@parameter('foo')
>;>;def handle\u foo(self,value):
…pass



必需参数:
----


默认情况下需要参数。这意味着,如果"deconfigurable."初始化未收到指定的
命名参数,则将引发"RequiredParametererror"。

如果参数未提供值,则将"default=`传递给`@parameter`将阻止参数
引发"requiredparametererror"。


>;@parameter('foo',default='bar')
>;>;def handle\u foo(self,value):
…pass



类型检查参数:
——


提供了一个基本机制,以确保传递的参数值
属于特定类型。通过向"@parameter"的
"确保类型"关键字参数提供类型值,传入的任何值都将通过
IsInstance check*


>;@parameter('bar',确保类型=list)
>;>;def handle\bar(self,value):
…传递



依赖项参数:
——


有时我们希望推迟处理某个参数,直到先处理其他
参数。为此,只需将一个
依赖项、依赖项列表传递给`@参数`。



>;@parameter('foo')
>;>;def handle\u foo(self,foo):
…pass

>;@parameter('bar',depends\u on=('foo',))
>;>def handle\u bar(self,bar):
…#按foo偏移条形图
…返回bar+self.foo



人工示例:
----


=str)
def handle_first(self,name):
return person.format_name(name)

@parameter('last_name',sure_type=str)
def handle_last(self,name):
return person.format_name(name)

@parameter('age',sure_type=int)
def handle_age(self,value):传递

@参数('registered_to_vote',确保_type=bool,depends_on=('age',))
def handle_vote(self,value):
如果self.age<;18:
value=false
返回值

>;me=个人(
…名为'dustin',
…姓'lacewell',
…年龄=25岁,注册的票数=真,
…)
>>>优先T me.first_name,"可以投票:",me.registered_to_vote
达斯汀可以投票:true

>;kid=个人(
…first_name='某个孩子',
…姓氏='smith',
…年龄=12岁,注册的选票=真,
…)
>;>;打印kid.first_name,"可以投票:",kid.registered_to_vote
有人可以投票:false





spidersilk(twisted.web config lib)的示例:
----


来自twisted.web.static import file
来自twisted.web.proxy import reverseProxyrce

来自spidersilk导入域,httpd

port=80,
默认值为"ldlework.com",
域=[
域(
主机名为ldlework.com,
资源=文件('/var/txweb/ldlework.com'),
),
域(
hostname='lichen.ldlework.com',
resource=reverseproxy resource('localhost',8088',,
),
],





域实现为:

类域(deconfigurable):
@参数('hostname',确保类型=str)
定义参数主机名(self,主机名):
传递

@parameter('resource',确保类型=twisted.web.resource.resource)
定义参数资源(self,资源):
传递

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

推荐PyPI第三方库


热门话题
java将一个节点拖到另一个不运行JavaFX的节点中   java如何在spring boot中创建完全自定义的查询   java Arraylist和ArrayListBlockingQueue之间的区别是什么?   java Weblogic会中断长时间运行的线程吗   java如何调用displayAd()方法?   使用数组在两个组之间进行java IPL匹配   java如何在Eclipse中的org下创建测试套件。朱尼特   java获取屏幕上任意点的鼠标坐标   正则表达式需要java正则表达式方面的帮助   如何使用Java获取Ram大小和硬盘大小?   java如何将所需长度设置为数组中的整数?   安卓应用程序启动前的java程序已终止   swing设置要在Java代码中打印的页边距   迭代期间java故障安全迭代器的删除   java如何在main中调用方法,以便它们在同一行上输出?   编译Java:尝试播放mp3文件时出错   java如何使用Spring数据Rest在POST调用中保存嵌入对象   java JAXWS如何在端点外部注入SecurityContext