don*_*pj2 7 python object-oriented-analysis
我正在考虑一种情况,我有一个对象"交易",它具有相当多的属性,如帐户,金额,日期,货币,类型等.
我从不计划改变这些数据点,计算逻辑将存在于其他类中.我的问题是,为了保存数据,实例化成千上万个对象的Python设计是否糟糕?我发现数据嵌入在类中更容易,而不是试图将其嵌入到某些数据结构组合中.
不,这完全没问题.事实上,Python在标准collections模块中支持它:
from collections import namedtuple
Transaction = namedtuple("Transaction", ["account", "amount"])
Run Code Online (Sandbox Code Playgroud)
而不是class Transaction(object):等等.请注意,这namedtuple是一种"类工厂",您需要将要构造的类的名称作为字符串传递给它.这不一定是你绑定结果的名称,但这样做仍然是一个好主意.命名元组类型类似于Pascal中的记录或C中的结构:具有命名成员但没有自己的重要行为的数据持有者.
用法:
>>> t = Transaction(account="my private account", amount=+1000)
>>> t
Transaction(account='my private account', amount=1000)
>>> t.amount
1000
>>> t.amount += 1
Traceback (most recent call last):
File "<ipython-input-6-ae60188f2446>", line 1, in <module>
t.amount += 1
AttributeError: can't set attribute
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
136 次 |
| 最近记录: |