import numbers class IntFiled: def __get__(self, instance, owner): return self.value # 对age的类型做限制 def __set__(self, instance, value): if not isinstance(value, numbers.Integral): raise ValueError("int value need") self.value = value class User: age = IntFiled() # 关键点,变量名要和__init__中的属性一致 def __init__(self, age): self.age = age if __name__ == '__main__': user = User(18) print(user.age)
Debug 看下 instance 和 value 的值: