跳转到主要内容

基于角色的软件开发

项目描述

Roles

基于角色的开发库。

DCI(数据、上下文、交互)模式的Python实现(http://www.artima.com/articles/dci_vision.html)。

与混入相比,这个角色仅应用于主题实例,而不是主题类(唉,需要构建一个新的类)。

角色可以被分配和撤销。可以将多个角色应用于一个实例。撤销可以按任何特定顺序进行。

主页: http://github.com/amolenaar/roles

发布: http://pypi.python.org/pypi/roles

使用Roles

作为基本示例,考虑一个域类

>>> class Person:
...     def __init__(self, name):
...         self.name = name
>>> person = Person("John")

该实例应参与一个协作,在其中它承担特定的角色

>>> from roles import RoleType
>>> class Carpenter(metaclass=RoleType):
...     def chop(self):
...          return "chop, chop"

将角色分配给该人

>>> Carpenter(person)				# doctest: +ELLIPSIS
<__main__.Person+Carpenter object at 0x...>
>>> person					# doctest: +ELLIPSIS
<__main__.Person+Carpenter object at 0x...>

该人仍然是人

>>> isinstance(person, Person)
True

...并且可以做一些木匠活

>>> person.chop()
'chop, chop'

有关更多示例,请参阅 roles.py

上下文

在特定情境中使用角色非常有意义。一个经典的例子是货币转账示例。这里使用两个账户,将一定金额从其中一个账户转账到另一个账户。因此,一个账户扮演源账户的角色,另一个账户扮演目标账户的角色。

示例可以在example.py中找到。

项目详情


下载文件

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

源分布

roles-1.0.0.tar.gz (7.2 kB 查看哈希值)

上传时间

构建分布

roles-1.0.0-py3-none-any.whl (7.1 kB 查看哈希值)

上传时间 Python 3

由以下机构支持

AWS AWS 云计算和安全赞助商 Datadog Datadog 监控 Fastly Fastly CDN Google Google 下载分析 Microsoft Microsoft PSF 赞助商 Pingdom Pingdom 监控 Sentry Sentry 错误记录 StatusPage StatusPage 状态页面