我正在处理具有许多属性的对象。我没有使用所有属性,但如果我访问其中一个属性,我会多次使用它。是否可以仅在第一次访问属性时对其进行初始化。我想出了下面的代码,遗憾的是它真的很慢。
class Circle():
def __init__(self,radius):
self.radius = radius
self._area = None
@property
def area(self):
if self._area is None:
self._area = self.radius**2 * np.pi
return self._area
有没有一种有效的方法来实现这一目标?
最佳答案
对于 Python 3.8 或更高版本,请使用 @cached_property 装饰器。该值是在第一次访问时计算的。
from functools import cached_property
class Circle():
def __init__(self,radius):
self.radius = radius
self._area = None
@cached_property
def area(self):
if self._area is None:
self._area = self.radius**2 * np.pi
return self._area
关于python - 您可以在第一次访问对象属性时对其进行初始化吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67969547/