ユースケース:
インスタンス変数(フォームフィールド)を受け取るフォームオブジェクトがあります。ここで、メソッドチェーンを使用して変数を検証するのが好きです。任意の方法の例:
class Field(object):
def __init__(self, form, name):
self.form = form
self.name = name
def unspace(self):
setattr(self.form, self.name, getattr(self.form, self.name).replace(' ',''))
return self
def len_valid(self, length):
if len(getattr(self.form, self.name)) < length :
setattr(self.form, self.name + '_invalid', True)
self.form.valid = False
return self
class Forms(object):
def __init__(self):
self.valid = True
def validate(self, name):
return Field(self,name)
f = Forms() # create the form with some data
f.a = 'J o Hn '
f.b = ' Too L o n g'
f.validate('a').unspace().len_valid(2)
f.validate('b').unspace().len_valid(5)
RESULT :
f.a : 'JoHn'
f.a_invalid : True
f.b : 'TooLong'
f.valid : False
これは、Formインスタンス変数でメソッドチェーンを作成するPythonの方法ですか。