限制性口述

kanagata的Python项目详细描述


提供提取的dict(collections.userdict的子类)。

如何使用

(待办事项:说明)

models.py

fromkanagataimportRestrictionBuilder# group: name, users# user: name, age, Option[skills], Option[school]# skill: namewithRestrictionBuilder()asb:withb.define_dict("Group")asgroup:group.add_member("name",required=True)group.add_list("users","User",required=True)withb.define_dict("User")asuser:user.add_member("name",required=True)user.add_member("age",required=True)user.add_dict("school","School",required=False)user.add_list("skills","Skill",required=False)withb.define_dict("Skill")asskill:skill.add_member("name",required=True)withb.define_dict("School")asschool:school.add_member("name")school.add_list("groups","Group",required=True)
frommodelsimportUser# user can have only name, age, skills. (skills is optional)user=User(name="foo",age=20,skills=[])print(user)# {'name': 'foo', 'age': 20, 'skills': []}try:user2=User(name="bar")# ValueError: User: required fields {'age'} are not foundexceptValueError:passtry:user["xxx"]="bar"# ValueError: User: unsupported field 'xxx', field members=['name', 'age', 'school', 'skills']exceptValueError:pass# user.skills can have only name.user["skills"].append({"name":"math"})print(user)# {'skills': [{'name': 'math'}], 'age': 20, 'name': 'foo'}try:user["skills"].append({})# ValueError: Skill: required fields {'name'} are not foundexceptValueError:pass

0.0.1

  • 默认选项支持

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

推荐PyPI第三方库


热门话题
java为什么我的代码永远运行?它只是一堆带int的for循环,应该是递减的?   java如何更改IntelliJ IDEA中的XML缩进?   java如何使未填充的int数组不打印0?   eclipse My Weka Java代码结果*Weka*虚拟*STRING*用于*STRING*属性*   java泄漏了Windows com。安卓内部的政策恳求   java这个无限循环的原因是什么?   swing My标签在Java中很模糊   java如何在组件表示存储扩展中获取组件对象   java如何避免selenium网格中的会话超时   Java乘法测验,如果答案错误,如何循环   在Java HttpServlet Google app engine中保存对象   java ArrayList过滤器   java跳跃减慢了xvelocity:使用Libgdx/Box2D进行跳跃和跑步   java删除、复制和修改pom。xml文件   当提供的时区与服务器的时区相同时,RestCall中的java@DateTimeFormat(iso=iso.DATE_TIME)不工作   java Spring批处理多线程默认限制为10隐式?   安卓错误java。lang.UnsupportedOperationException:无法转换为维度:type=0x1