在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,资源):
传递
==
在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
默认值为"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,资源):
传递