【发布时间】:2009-09-06 17:35:26
【问题描述】:
我有一个对象,它基本上是 Oracle 序列的 Python 实现。由于各种原因,我们必须获取 Oracle 序列的 nextval,在确定主键时手动计数,然后在插入记录后更新序列。
以下是我的对象执行的步骤:
- 构造一个对象,其
key_generator属性最初设置为 None。 - 从数据库中获取第一个值,将其传递给 itertools.count。
- 使用属性
next_key从该生成器返回密钥。
我有点不确定在哪里执行第 2 步。我可以想到三种可能性:
- 在构造函数中跳过第 1 步并执行第 2 步。我觉得这很邪恶,因为我倾向于不喜欢在构造函数中进行这种初始化。
- 使
next_key在第一次调用时从数据库中获取起始键。我觉得这很邪恶,因为属性通常被认为是微不足道的。 - 将
next_key变成get_next_key方法。我不喜欢这个,因为这里的属性看起来更自然。
三害孰轻孰重?我倾向于 #2,因为只有第一次调用此属性才会导致数据库查询。
【问题讨论】:
标签: python properties initialization