我使用attrs定义了几个这样的类:
from attr import attrs, attrib, validators
@attrs
class MyClass:
name = attrib(])
@name.validator
def check_length(self, attribute, value):
if not (3 <= len(value) <= 30):
raise ValueError("Name must be between 3 and 30 characters")
description = attrib()
@description.validator
def check_length(self, attribute, value):
if not (10 <= len(value) <= 400):
raise ValueError("Description must be between 10 and 400 characters")
对于几个属性,我需要创建一个验证器来检查数据是否在某个范围内。我想避免重复,因此我可以创建一个自定义验证器,在其中为min和max传递一些额外的参数,如下所示:
def range_validator(instance, attribute, value, min_value, max_value):
if min_value >= len(value) >= max_value:
raise ValueError("Must be between {} and {}".format(min_value, max_value))
但是然后我不知道如何通过传递额外的参数(min_value和max_value)从attrib()内部调用此验证器,我的意思是执行以下操作:
name = attrib(validator=[range_validator(self, 10, 30)])
德玛西亚99
相关分类