我有很多代码使用下面给出的属性,我想知道是否有更好的方法来存储/返回属性的值,因为所有这些代码看起来都很重复,而且还必须在__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函数。