Python-属性描叙符协议ORM实现原理依据- __set__ __get__ __delete__
2024-10-09 15:24:03
class CheckString:
def __init__(self, variable_type):
self.variable_type = variable_type def __set__(self, instance, value):
print('__set__:', value)
self.value = "error:类型错误"
if self.variable_type == 'str':
self.value = value if isinstance(value, str) else "error:类型错误" def __get__(self, instance, owner):
print("__get__")
return self.value
pass def __delete__(self, instance):
pass class InfoModel:
name = CheckString(variable_type='str') if __name__ == '__main__':
info = InfoModel()
info.name = "北门吹雪"
print(info.name)
通过另外一个类来描叙类变量的属性类型,这个是ORM实现的核心基础
给属性赋值会调用 __set__方法,访问属性则会调用 __get__方法,则可以获取字段的对象和其值,删除字段时候则调用 __delete__方法
北门吹雪: https://www.cnblogs.com/2bjiujiu/
最新文章
- AgularJS中Unknown provider: $routeProvider解决方案
- eclipse code templates 设置(eclipse注释模版配置)
- AllJoyn Bundled Daemon 使用方式研究
- window上使用GIT的个人经验(入门级)
- 【gcd+数学证明】【HDU1722】 CAKE
- C++指针与const
- python学习笔记之运算符
- springMVC引入Validation详解
- 发送邮件,出现异常:服务器响应为: Error: need EHLO and AUTH first !";
- log4j控制指定包下的日志
- BZOJ4259 残缺的字符串 多项式 FFT
- 前端开发者不得不知的es6十大特性(转)
- CAS登陆过程UML中文版
- MySQL实现树状所有子节点查询的方法
- jsp中excel文件的创建与读取
- error C2065:!错误:未定义标识符“pBuf);”
- Day15-Django
- vue 表单 验证 async-validator
- [BZOJ5361][Lydsy1805月赛]对称数
- flume sink两种类型 file_rool 自定义sing com.mycomm.MySink even if there is only one event, the event has to be sent in an array