值对象模式实现
项目描述
一个 值对象 是一个代表简单实体的小型对象,其等价性不是基于身份:即两个值对象在它们具有相同的值时是相等的,而不一定是相同的对象。
默认情况下(如果你从 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 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 9d6f696f9ac0d5ecb6189f6fe08e153cc6ee39449c3b23100e565b156a60c569 |
|
MD5 | 2148ba70c44414eaf309080efbf0cf9a |
|
BLAKE2b-256 | 13d533f2063de7e21cf41cd6c029d2212cea9da7062e45cad37b3942bf935f7a |