python学习之特殊魔法__get__,__set__,__delete__

#要保证 age 属性 它只能是int类型且大小处于0到100之间
class Student(object):
def __init__(self):
pass

def get(self):
return self.age

def set(self,age):
if isinstance(age,int) and 0<age<100:
self.age=age
else:
print("请输入合法的年龄")
stu=Student()
stu.set(100)
stu.set(10)
print(stu.get())

#场景:age属性 一共有十几个
class Int_validation(object):
def __get__(self, instance, owner):
return self.value

def __set__(self, instance, value):
if isinstance(value,int) and 0<value<100:
self.value=value
else:
print("请输入合法的数字")

def __delete__(self, instance):
pass

class Student(object):
age=Int_validation()

stu=Student()
stu.age=50
print(stu.age)

# 1.首先我们要把共同的校验封装在一个类里也就是 Int_validation 类,
# 2.重写两个魔法函数 (get 和set)
# 3.age=Int_validation() 这个是关键,age 本来是个对象,放在类里当作了Student类属性
# 4.实例化对象stu给age进行赋值 ,它会自动调用Int_validation get的方法
原文地址:https://www.cnblogs.com/jinpingzhao/p/12668335.html