Python面向对象高阶-描述符与设计魔术方法
2021-12-22 16:16 何小六soso 阅读(36) 评论(0) 编辑 收藏 举报Python面向对象高阶-描述符与设计魔术方法
描述符
当一个类包含了三个魔术方法之一就成为描述符类,三个方法(get,set___,delete)
作用
描述符的作用就是对一个类中的某个成员进行一个详细的管理操作(获取,修改,删除)
描述符就是代理了一个类中的成员操作
代码示例
# 描述符类实际应用
# 定义学生类,记录id,名字,分数
# 学员的分数只能在1-100之间
'''
解决方法:
在init中检查score的范围,但只能在初始化时约束,初始化成功后还可以使用self.score进行更改
使用__setattr__(self, key, value)可以判断解决
使用描述符代理解决
'''
class Score():
__score = 1
def __get__(self, instance, owner):
return self.__score
def __set__(self, instance, value):
if value > 0 and value <= 100:
self.__score = value
else:
print('重新输入')
class Student():
score = Score()
def __init__(self, id, name, score):
self.id = id
self.name = name
self.score = score
def returnMe(self):
return f'''
编号:{self.id}
姓名:{self.name}
成绩:{self.score}
'''
# 实例化对象
s = Student('1', 'python', 11)
print(s.returnMe())
s.score = -99
print(s.returnMe())
设计模式
代码步骤和设计进行总结和归纳形成设计模式
设计模式是面向对象编程的设计