類属性.

class astropy.utils.decorators.classproperty(fget=None, doc=None, lazy=False)[ソース]

ベースクラス: property

似たような property ただし,クラスクラス属性を許す.すなわち,そのgetterは類似している. classmethod それがそうです。

包装方法は明示的に使用することができる classmethod 装飾器(この装飾器になる前の装飾器)、または classmethod (この修飾子を使用することによって、暗黙的である)を省略することができる。

注釈

クラス属性は read-only 属性です。Python記述子の動作方式の微妙な点のため、現在は属性の書き込み/削除は許可されていません。このような属性をクラス上で実現するためには,そのクラスのメタクラスを実現しなければならない.

パラメータ
fget呼び戻すことができる

この属性値を計算する関数(特に装飾子として用いる場合の関数). property それがそうです。

doc文字列、オプション

属性の文書文字列であるデフォルトではgetter関数から継承される.

lazyブル値、オプション

Trueであれば,1回だけ呼び出されるようにgetter関数を最初に呼び出して返された値をキャッシュする(属性の不活性計算用).これは似たようなものです lazyproperty それがそうです。♪the lazy パラメータは以下の場合にも使用可能である classproperty 装飾器として使用される(以下の第3例を参照)。修飾子文法で使うと must キーワードパラメータとして入力する.

実例.

>>> class Foo:
...     _bar_internal = 1
...     @classproperty
...     def bar(cls):
...         return cls._bar_internal + 1
...
>>> Foo.bar
2
>>> foo_instance = Foo()
>>> foo_instance.bar
2
>>> foo_instance._bar_internal = 2
>>> foo_instance.bar  # Ignores instance attributes
2

前述したように、1つは classproperty 読み取り専用属性を実現することに限定される:

>>> class Foo:
...     _bar_internal = 1
...     @classproperty
...     def bar(cls):
...         return cls._bar_internal
...     @bar.setter
...     def bar(cls, value):
...         cls._bar_internal = value
...
Traceback (most recent call last):
...
NotImplementedError: classproperty can only be read-only; use a
metaclass to implement modifiable class-level properties

当たる lazy オプションは、getterを一度だけ呼び出します::

>>> class Foo:
...     @classproperty(lazy=True)
...     def bar(cls):
...         print("Performing complicated calculation")
...         return 1
...
>>> Foo.bar
Performing complicated calculation
1
>>> Foo.bar
1

もし子が不活性を継承したら classproperty サブクラスの属性を再計算します:

>>> class FooSub(Foo):
...     pass
...
>>> FooSub.bar
Performing complicated calculation
1
>>> FooSub.bar
1

方法要約

deleter (fdel)

属性上の削除器を変更するための記述子.

getter \(fget)

属性上のgetterの記述子を変更するために用いる.

setter (fset)

属性を変更するための設定器の記述子.

方法文書

deleter(fdel)[ソース]

属性上の削除器を変更するための記述子.

getter(fget)[ソース]

属性上のgetterの記述子を変更するために用いる.

setter(fset)[ソース]

属性を変更するための設定器の記述子.