@property デコレータを含む次のサンプル コードを使用します。
class Grade_Calculator(object):
def __init__(self,score):
self.score = score
@property
def grade(self):
if self.score in range(60,70):
grade = 'D'
elif self.score in range(70,80):
grade = 'C'
elif self.score in range(80,90):
grade = 'B'
elif self.score in range(90,101):
grade = 'A'
return grade
@property
def failure(self):
if self.score < 60:
print 'See me'
grade = 'F'
return grade
およびインスタンス:
g = Grade_Calculator(28)
g.grade
を返しますUnboundLocalError
。このエラーを回避するためfailure()
に呼び出したいと思います。grade()
インスタンスの場合:
g = Grade_Calculator(89)
g.failure()
静かに失敗します。この状況でフェイルセーフとして機能するように電話grade()
をかけたいと思います。failure()
私はself.method()
呼び出しを行うことについて多くの言及を見てきましたが、それらは私にとってはうまくいきません.デコレータの存在が私を何とか台無しにしていると思います:
@property
def grade(self):
if self.score < 60:
self.failure()
elif self.score in range(60,70):
grade = 'D'
elif self.score in range(70,80):
grade = 'C'
elif self.score in range(80,90):
grade = 'B'
elif self.score in range(90,101):
grade = 'A'
return grade
g = Grade_Calculator(28)
g.grade
See me
---------------------------------------------------------------------------
TypeError Traceback (most recent call last)
<ipython-input-667-fb10e6cf27d4> in <module>()
----> 1 g.grade
./sample.py in grade(self)
6 def grade(self):
7 if self.score < 60:
----> 8 self.failure()
9 elif self.score in range(60,70):
10 grade = 'D'
TypeError: 'str' object is not callable
私は何を理解していませんか?