https://docs.python.org/zh-cn/3/reference/datamodel.html#implementing-descriptors
一个简单的描述器
class CharFiled: def __init__(self, max_length=20): self.max_length = max_length def __get__(self, instance, owner): return self.value def __set__(self, instance, value): if isinstance(self.value, str): if len(value) <= self.max_length: self.value = value else: raise ValueError('字符串长度在{}以内'.format(self.max_length)) else: raise TypeError('need a str') def __delete__(self, instance): self.value = None class UserModel: """ 模型类 """ name = CharFiled(max_length=20) pwd = CharFiled(max_length=40) m = UserModel() # 调用描述器中的set方法,其中self表示描述器对象本身,instance表示UserModel这个类创建的实例m # value表示hh m.name = 'hh'