python 方法属性化,限制属性@property,@x.setter
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 = values = Student()
s.score=9999 # 先运行setter,修饰限定score的属性
print(s.score) # 最终得到的值
s.score ='jk'
print(s.score)
【python 方法属性化,限制属性@property,@x.setter】上面的修改,直接让输入的数值在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 = grades = Student()
s.score = 1000
print(s.score)
推荐阅读
- 第6.2章(设置属性)
- python学习之|python学习之 实现QQ自动发送消息
- 对抗抑郁最好的方法
- 逻辑回归的理解与python示例
- 怎样用黑谜速冻膜去黑头,|怎样用黑谜速冻膜去黑头, 最有效的去黑头的方法看这!
- python自定义封装带颜色的logging模块
- 【Leetcode/Python】001-Two|【Leetcode/Python】001-Two Sum
- 移动端h5调试方法
- 唱歌教学(导致嗓音损坏的几个常见的错误唱歌方法!)
- 拆书方法训练营