Python2.5.4。Pythonはかなり新しく、昨夜の時点でデコレータはまったく新しい。複数のブール属性を持つクラスがある場合:
class Foo(object):
_bool1 = True
_bool2 = True
_bool3 = True
#et cetera
def __init__():
self._bool1 = True
self._bool2 = False
self._bool3 = True
#et cetera
単一のデコレータを使用して、ブール属性のいずれかの設定がブールでなければならないことを確認し、これらの変数の要求された1つのブール値を返す方法はありますか?
言い換えれば、属性ごとにこのようなものとは対照的に?
def bool1():
def get_boo1():
return self._bool1
def set_bool1(self,value):
if value <> True and value <> False:
print "bool1 not a boolean value. exiting"
exit()
self._bool1=value
return locals()
bool1 = property(**bool1())
#same thing for bool2, bool3, etc...
私はそれを次のようなものとして書き込もうとしました:
def stuff(obj):
def boolx():
def fget(self):
return obj
def fset(self, value):
if value <> True and value <> False:
print "Non-bool value" #name of object???
exit()
obj = value
return locals()
return property(**boolx())
bool1 = stuff(_bool1)
bool2 = stuff(_bool2)
bool3 = stuff(_bool3)
それは私に与えます:
File "C:/PQL/PythonCode_TestCode/Tutorials/Decorators.py", line 28, in stuff
return property(**boolx())
TypeError: 'obj' is an invalid keyword argument for this function
これを正しく行う方法についての指針はありますか?
ありがとう、
ポール