Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- class Validator:
- def __call__(self, value):
- return self.validate(value)
- class MinValidator(Validator):
- def __init__(self, minimum):
- self.minimum = minimum
- def validate(self, value):
- return value >= self.minimum
- class MaxValidator(Validator):
- def __init__(self, maximum):
- self.maximum = maximum
- def validate(self, value):
- return value <= self.maximum
- # big version
- ##class BetweenValidator(MinValidator, MaxValidator):
- ## def __init__(self, minimum, maximum):
- ## MinValidator.__init__(self, minimum)
- ## MaxValidator.__init__(self, maximum)
- ##
- ## def validate(self, value):
- ## return MinValidator.validate(self, value) and MaxValidator.validate(self, value)
- class MergeValidators(Validator):
- validator_classes = []
- def __init__(self, *args):
- for index, vclass in enumerate(self.validator_classes):
- if type(args[index]) == list:
- vclass.__init__(self, *args[index])
- else:
- vclass.__init__(self, args[index])
- def validate(self, value):
- for vclass in self.validator_classes:
- if not vclass.validate(self, value):
- return False
- return True
- # small version
- class BetweenValidator(MergeValidators):
- validator_classes = [
- MinValidator,
- MaxValidator
- ]
- assert BetweenValidator(18, 25)(18)
- # same as "MinValidator(18)(18) and MaxValidator(25)(18)"
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement