限制性口述

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 Android Studio从XML中洗牌2D数组列   安卓 rx java obsever pojo模型的变化   java如何在安卓应用程序中以编程方式打开google教室   java如何将充满令牌的对象[]转换为整数数组?   java Minify Maven插件抛出“不支持JavaScript引擎”错误   java如何检查调用应用程序的用户是否具有绑定特权端口的权限?   java无法向firestore发送数据   jpanel Java向ScrollPane中嵌入的面板添加JLabel   将Bash脚本移植到Java   JavaSpring显示错误消息   java如何为这些路径表达式编写正则表达式   java如何通过编程在Android手机上获得时间?   Java:捕获未检查的异常与已检查的异常