码迷,mamicode.com
首页 > 编程语言 > 详细

Python-属性描叙符协议ORM实现原理依据- __set__ __get__ __delete__

时间:2018-06-06 01:07:37      阅读:213      评论:0      收藏:0      [点我收藏+]

标签:协议   init   model   调用   font   变量   variable   name   string   

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__方法

Python-属性描叙符协议ORM实现原理依据- __set__ __get__ __delete__

标签:协议   init   model   调用   font   变量   variable   name   string   

原文地址:https://www.cnblogs.com/2bjiujiu/p/9142647.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!