跳转到主要内容

值对象模式实现

项目描述

来自维基百科:

一个 值对象 是一个代表简单实体的小型对象,其等价性不是基于身份:即两个值对象在它们具有相同的值时是相等的,而不一定是相同的对象。

默认情况下(如果你从 object 继承)Python遵循“引用语义”,即两个对象相等如果它们是相同的实例。 Value 类实现“值语义”,即如果你从它继承,你的对象将保持相同的数据时相等。

此实现还将检查你的 __init__ 签名,以自动分配实例变量并为你的对象生成一个漂亮的 __repr__,同时提供一个合适的 __hash__ 实现。

而不是手动分配每个实例变量

>>> class Date(object):
...
...     def __init__(self, year, month=1, day=1):
...         self.year = year
...         self.month = month
...         self.day = day

Value 定义了 __new__,它将查看你的 __init__ 签名并根据它分配实例变量

>>> from value import Value
...
>>> class Date(Value):
...
...     def __init__(self, year, month=1, day=1):
...         pass
...
>>> Date(2013, 3).year == 2013
True
>>> Date(2013, 3).month == 3
True
>>> Date(2013, 3).day == 1
True

Value 定义了 __eq____ne__ 来实现值对象语义,即持有相同数据的对象被认为是相等的

>>> Date(2013, 3, 18) == Date(2013, 3, 18)
True
>>> Date(2013, 3, 18) != Date(1988)
True

Value 还为你定义了 __repr__,基于 __init__ 签名

>>> repr(Date(2013, 3, 18))
'Date(2013, 3, 18)'
>>> repr(Date(1988, 1, 1))
'Date(1988)'

Value 还为你定义了 __hash__,以便实例可以在集合中使用,并作为字典键。

安装

使用 pip 或 easy_install

pip install value==0.1.0

或者,您只需将 value.py 文件放入您的项目——它是自包含的。

  • value 已在 Python 2.6、2.7、3.2、3.3 和 PyPy 上进行了测试。

  • value 遵循 语义版本控制

项目详情


下载文件

下载适用于您的平台的文件。如果您不确定选择哪个,请了解有关 安装包 的更多信息。

源代码发行版

value-0.1.0.tar.gz (3.4 kB 查看哈希值)

上传时间 源代码

由以下组织支持