修飾関数はNDData対象を受け入れる¶
♪the astropy.nddata
モジュールは装飾器を含んでいます support_nddata()
これにより開発者やユーザが容易に作成することができます NDData
オブジェクトおよび単独のパラメータ.
以下の機能を考慮してください。
def test(data, wcs=None, unit=None, n_iterations=3):
...
この関数を test(nd)
どこだ? nd
ある種の NDData
例を挙げましょう以下の命令を用いてこの関数を修飾することができる support_nddata()
**
from astropy.nddata import support_nddata
@support_nddata
def test(data, wcs=None, unit=None, n_iterations=3):
...
これはユーザが呼び出したときに test(nd)
使用する:この関数を自動呼び出しする.
test(nd.data, wcs=nd.wcs, unit=nd.unit)
修飾器は関数の署名を見て、何かパラメータがあるかどうかをチェックするのも NDData
オブジェクトは,それらを単一のパラメータとして渡す.修飾されていないように,単独のパラメータを用いてこの関数を呼び出すことも可能である.
以下のようなことが発生した場合は,警告を発する. NDData
属性ですが関数はそれを受け入れません-例えば wcs
設定されているが、この関数はWCSオブジェクトをサポートしていない。一方,関数中のパラメータが存在しなければ NDData
オブジェクトまたは設定されていない場合は、デフォルト値を保持します。
If the function call succeeds, then the decorator returns the values from the
function unmodified by default. However, in some cases we may want to return
separate data
, wcs
, etc. if these were passed in separately, and a new
NDData
instance otherwise. To do this, you can specify
repack=True
in the decorator and provide a list of the names of the output
arguments from the function:
@support_nddata(repack=True, returns=['data', 'wcs'])
def test(data, wcs=None, unit=None, n_iterations=3):
...
このようにして,この関数は以下の場合に単独の値を返す. test
個々のパラメータ呼び出しを用いて,入力がYESの場合は,入力と同じクラスタイプのオブジェクトを呼び出す. NDData
あるいはサブクラスインスタンス.
最後に、装飾者に入力を特定のものに制限させることができます NDData
サブクラス(およびこれらのサブクラスのサブクラス)を用いる accepts
オプション::
@support_nddata(accepts=CCDImage)
def test(data, wcs=None, unit=None, n_iterations=3):
...