私は以下のコードについていくつかの質問があります。プロパティPythonでデコレータと設定した機能
1 class Test(object):
2 def __init__(self):
3 print "Object instance created."
4 self._x = raw_input("Initial value of x = ")
5 print "Initial value of x set."
6
7 def Property(func):
8 return property(**func())
9
10 @Property
11 def x():
12 def fget(self):
13 print 'Getting x'
14 return self._x
15 def fset(self, val):
16 print 'Setting x'
17 self._x = val
18 def fdel(self):
19 print 'Deleting x'
20 del self._x
21 doc = "A test case"
22 return locals()
- なぜ
Property()
機能が必要なの? - 私はちょうど
return locals()
を入力してから@property
を直接デコレータに使用できないのはなぜですか?
私がエラーを受けたとき、xは引数を取らず、与えられたもの(おそらくは 'self')を取ると言います。私はPythonが@x.setter
オプションを持っていることを知っていますが、私は2.4を定期的に使用することを余儀なくされています。それでも、は、それをすべて1つのブロックに定義するよりもエレガントではないようです。
@property
を使用してすべてを1つのブロックに定義する方法はありますか?
私は実際にあなたの回避策が好きです - 私はそれを使い始めるかもしれません! :) –