ddd值对象实现

vo的Python项目详细描述


Info:DDD Value Object implementation.
Author:Paweł Zadrożny @pawelzny <pawel.zny@gmail.com>
CI StatusDocumentation StatusPyPI Repository StatusRelease StatusProject StatusSupported python versionsSupported interpretersLicense

功能

  • 值对象是不可变的。
  • 具有相同值的两个对象被视为相等
  • 使用点符号访问值:value.my_attr
  • 按键访问值:value['my_attr']

安装

pipenv install vo  # or pip install vo

https://pypi.org/project/vo/

快速示例

值接受任何key=value对。这些对将作为属性附加到对象。 一旦创建的值是不可变的。无法更改或删除属性。

>>>fromvoimportValue>>>book=Value(title='Learning Python',...authors=['Mark Lutz','David Ascher'],...publisher="O'REILLY")>>>bookValue(authors=['Mark Lutz','David Ascher'],publisher="O'REILLY",title='Learning Python')>>>str(book)'{"authors": ["Mark Lutz", "David Ascher"], "publisher": "O\'REILLY", "title": "Learning Python"}'

警告

任何修改或删除值的尝试都将引发ImmutableInstanceError

>>>fromvoimportValue>>>book=Value(title='Learning Python',...authors=['Mark Lutz','David Ascher'],...publisher="O'REILLY")>>>book.title='Spam'Traceback(mostrecentcalllast):File"<input>",line1,in<module>raiseImmutableInstanceError()vo.value.ImmutableInstanceError:ModificationofValuefrozeninstanceisforbidden.

访问值

可以像对象属性或dict键一样访问值。

>>>fromvoimportValue>>>book=Value(title='Learning Python',...authors=['Mark Lutz','David Ascher'],...publisher="O'REILLY")>>>book.title==book['title']True>>>book.authors==book['authors']True

对象比较

让我们以同一本书为例。

>>>fromvoimportValue>>>book1=Value(title='Learning Python',...authors=['Mark Lutz','David Ascher'],...publisher="O'REILLY")>>>book2=Value(title='Learning Python',...authors=['Mark Lutz','David Ascher'],...publisher="O'REILLY")>>>book1==book2True>>>book1isbook2False

值查找

检查值是否存在。

>>>fromvoimportValue>>>book=Value(title='Learning Python',...authors=['Mark Lutz','David Ascher'],...publisher="O'REILLY")>>>'title'inbookTrue>>>'price'inbookFalse>>>book.title'Learning Python'>>>book.priceTraceback(mostrecentcalllast):File"<input>",line1,in<module>AttributeError:'Value'objecthasnoattribute'price'

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

推荐PyPI第三方库


热门话题
java JPanel不会对键绑定做出反应   当时间大于零时,不得在UI线程上调用java Await   JTextArea的java线程安全。追加   Java用户输入的字和行计数器   java以spreedsheat格式将数据保存到文件中   java构造函数的意义是什么?   java findViewById返回null,尽管组件的ID存在   java如何向按钮添加图像   java如何中断ExecutorService的线程   java如何将属性(例如枚举)绑定到不同类型的组件属性(例如每个枚举的映像)?   随机森林分类器的java实现   html使用java连接到一个站点并发布,HTTP状态代码200   从类访问属性时发生java编译错误   Java自动填充ArrayList,搜索更好的选项