怠惰属性

class astropy.utils.decorators.lazyproperty(fget, fset=None, fdel=None, doc=None)[ソース]

ベースクラス: property

その動作方式はproperty()に類似しているが,一度だけ値を計算する.

これは実質的に属性の計算結果を __dict__ 対象事例の.これは,ある属性の値を計算するのに有用であり,そうでなければこれらの属性は不変であるはずである.例えば:

>>> class LazyTest:
...     @lazyproperty
...     def complicated_property(self):
...         print('Computing the value for complicated_property...')
...         return 42
...
>>> lt = LazyTest()
>>> lt.complicated_property
Computing the value for complicated_property...
42
>>> lt.complicated_property
42

本例に示すように,2回目 complicated_property 訪問されると print 文は実行されていない.1回目のアクセスのみオフ時の返却値 complicated_property 返されました。

デフォルトでは、setterとdeleterを使用して、それぞれ格納されていることを上書きして削除します。 __dict__ それがそうです。これらのデフォルト動作を実行する前に、任意のユーザによって指定された設定器または削除器が実行される。1つの例外は、ユーザ設定器がすでに新しい値を設定している場合、デフォルト設定器を実行しないことである。 __dict__ この値を返します None それがそうです。