class Student(object):
@property # 函数属性化
def score(self): # 获取属性
return self._score # 返回处理后的属性值,一定要有_
@score.setter # 设置属性
def score(self, value):
if not isinstance(value, int): #判断value类型
try:
raise ValueError('score must be an integer!') # 主动抛出异常
except ValueError as e:
self._score = e
elif value < 0 or value > 100:
try:
raise ValueError('score must between 0 ~ 100!')
except ValueError as e:
self._score = e
elif 0<=value<=100 and isinstance(value,int):
self._score = value
s = Student()
s.score=9999 # 先运行setter,修饰限定score的属性
print(s.score) # 最终得到的值
s.score ='jk'
print(s.score)
上面的修改,直接让输入的数值在0~100之间:
class Student():# 默认object,可以没有括号
@property
def score(self):
return self._score
@score.setter
def score(self,grade):
if not isinstance(grade,int): # 必须先判断数值类型
try:
raise TypeError("score must be an integer")
except TypeError as e:
self._score = e
elif grade<0:
self._score = 0
elif grade > 100:
self._score = 100
elif 0<=grade<=100:
self._score = grade
s = Student()
s.score = 1000
print(s.score)