機能「FIEは」常にオン「123」を返すだけゲッターを持つデータ記述子を作成しますすべてのインスタンス「y」が使用されます。
例では、「X」を使用して混乱していないときに我々は、定数を戻す場合でもプロトコルで必要なパラメータ「Y」は、私たちはそれを少し変更してみましょう:
def fie(x):
def foo(y):
print "Returning x"
return x
return property(foo)
class Dog(object):
age = fie(3)
>>> Dog.age
<property object at 0x1050565d0>
>>> pluto = Dog()
>>> pluto.age
Returning x
3
>>> pluto.age = 5
Traceback (most recent call last):
File "<pyshell#239>", line 1, in <module>
pluto.age = 5
AttributeError: can't set attribute
として、あなたは私たちの新しい情けない機能と私たちはクラス犬上の一定の値で年齢という名前の属性を作成し、見ることができます。クラス上で呼び出されると、それはプロパティのプロトコルラッパーとして引き続き表示されますが、インスタンスプルートでは、それは魔法を起こします。また、ゲッターのみを定義したので、プロパティーは読み取り専用です。
クラスは、新しいスタイルのものでなければならないことに注意してください(すなわち対象から継承)、インスタンスの辞書内の実際の整数値に属性年齢を変更し、ラッパーをそれ以外の場合は割り当てがうまくいくと永遠に上書き:
class Dog2:
age = fie(7)
>>> ploto = Dog2()
>>> ploto.age
Returning original x
7
>>> ploto.age = 8
>>> ploto.age
8
'fie(3).fget(4)'は '123'を返しますが、私はこれが何であるか分かりません。 –
このコードを見つけた場所や正確なコードそのものについて、もっと文脈を伝えてください。 'property(foo)'の呼び出しは、通常、クラス定義(https://docs.python.org/2/library/functions.html#property)の中で「管理属性」を定義するために使用されます。したがって、 'instance.fie'のようなことができ、' fie'を呼び出します。コードの周りにもっと文脈があるなら、著者がこれをやっている理由を知ることができます –