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第三方库


热门话题
IntelliJ中的java默认Maven项目结构不一致   java我希望链接(在帖子和页面上)在一些访问者加载时被自动点击   java如何使用单独的方法隐藏JButton并在新类中调用   java KStream leftJoin KStream具有相同的密钥   java图像在垂直滚动窗格视图端口中消失   java从指定的起始点开始以n的增量填充数组   java JLabel和JTextField不在swing表单中应用   java springboot mongo如果没有映像,请使用现有映像   类似C++映射的java容器   java如何在没有Valgrind错误的情况下调用JNI_CreateJavaVM?   java如何在安卓中运行后台服务   java onPostExecute不运行