Skip to main content

值对象模式的实现

项目描述

来自维基百科

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

默认情况下(如果您从object子类化)Python 遵循“引用语义”,即如果两个对象是同一个实例,则它们是相等的。 类实现“值语义”,即如果您将其子类化,您的对象将相等,如果它们拥有相同的数据。

此实现还将检查您的__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还根据 __init__签名为您定义__repr__ :

>>> 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文件拖放到您的项目中——它是独立的。

  • 使用 Python 2.6、2.7、3.2、3.3 和 PyPy 测试值。

  • 遵循语义版本控制

项目详情


下载文件

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

源分布

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

已上传 source