gpt4 book ai didi

python - 属性应该进行重要的初始化吗?

转载 作者:行者123 更新时间:2023-11-28 21:30:48 25 4
gpt4 key购买 nike

我有一个对象,它基本上是 Oracle 序列的 Python 实现。由于各种原因,我们必须获取Oracle序列的nextval,在确定主键时手动累加,然后在插入记录后更新序列。

这是我的对象执行的步骤:

  1. 构造一个对象,并将 key_generator 属性初始设置为 None。
  2. 从数据库中获取第一个值,并将其传递给 itertools.count。
  3. 使用属性 next_key 从该生成器返回 key 。

我有点不确定在哪里执行第 2 步。我可以想到三种可能性:

  1. 在构造函数中跳过步骤 1 并执行步骤 2。我发现这很邪恶,因为我倾向于不喜欢在构造函数中进行这种初始化。
  2. 使 next_key 在第一次调用时从数据库获取起始 key 。我发现这种邪恶是因为属性通常被认为是微不足道的。
  3. next_key 设为 get_next_key 方法。我不喜欢这个,因为属性在这里看起来更自然。

三害相权取其轻?我倾向于#2,因为只有第一次调用此属性才会导致数据库查询。

最佳答案

我想你的疑虑来自PEP-8 :

    Note 3: Avoid using properties for computationally expensive
operations; the attribute notation makes the caller believe
that access is (relatively) cheap.

遵守标准行为通常是一个好主意;这将是废弃解决方案 #2 的一个原因。

但是,如果您觉得接口(interface)使用属性比使用方法更好,那么我会简单地记录第一次调用的成本更高,然后采用该方法(解决方案 #2)。
最后,建议是需要解释的。

关于python - 属性应该进行重要的初始化吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1386210/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com