如果属性当前为None,如何使Python对象预先计算属性?

时间:2014-07-09 16:30:46

标签: python oop properties

我正在编写一个用于存储一些数据的Python对象。我希望与对象关联的数据之一必须以随机方式计算(它是" null模型"各种类型)。因此,我希望该功能可以执行以下操作:

  • 如果尚未预先计算属性,请计算并存储该属性。
  • 如果已预先计算了属性,请从内存中读取,而不是计算。

我想要完成的一个非常非常简单的玩具示例如下。假设我有一个名为Object的对象。它目前设置如下:

from random import random

class Object(object):

    def __init__(self):
        self._x = None

    @property
    def x(self):
        return self._x

    @x.setter
    def x(self):
        self._x = random() # Assume that this is the stochastic thing to compute.

我想要达到的目的是:

>> O = Object()
>> print O.x
<result of computation printed here, rather than "None">

这可能吗?如果是这样,我将如何实现这一目标?如果没有,那么编写代码的最佳方式是什么?

1 个答案:

答案 0 :(得分:3)

如果_x None,请让您的getter初始化from random import random class Object(object): def __init__(self): self._x = None @property def x(self): if self._x is None: self._x = random() return self._x

{{1}}