计算和存储作为属性访问的值的更简单/更好的方法?



我有很多代码使用下面给出的属性,我想知道是否有更好的方法来存储/返回属性的值,因为所有这些代码看起来都很重复,而且还必须在__init__中指定self._a等等并不完全漂亮。。。

class X:
    def __init__(self):
        self._a = None
        self._b = None
    @property
    def a(self):
        if self._a is None: self._a = expensive_function()
        return self._a
    @property
    def b(self):
        if self._b is None: self._b = another_expensive_function()
        return self._b

使用if not hasattr(self, '_a'): self._a = expensive_function()可以避免将隐藏参数设置为None

为了去掉重复的东西,你可以使用一些decorator函数。

最新更新