python高阶 -- 描述器

   描述器功能强大,应用广泛,它可以控制我们访问属性、方法的行为,是@property、super、staticmethod、类方法、类属性、实例背后的实现机制,是一种比较底层的设计

 

描述器定义

  描述器是一个具有“绑定的行为”的对象属性,该对象属性访问通过描述器协议覆盖:__get__(),__set__()和__delete__()。若对象中有定义这三个方法中的任何一个,则该对象被称为一个描述器

 

object.__get__(self, instance, owner)

  获取属主类的属性(类属性访问)或者该类的一个实例的属性(实例属性访问),owner始终是属主,instance是属性访问的实例,当属性通过owner访问时则为None,这个方法应该返回(计算后)的属性值,或者引发一个Atrribute异常

 

object.__set__(self, instance, value)

  设置属主类的实例instance的属性为一个新值value

 

obje.__delete(self, instance)

  删除属主类的实例instance的属性

 

类型

  1、描述器类有__get__和 __set__ 2个方法

  2、非数据描述符只有一个__get__方法,通常用于函数。非数据描述器的优先级低于实例属性

  

   例子中的t.attr是访问Mode类的属性attr,但实际是访问Filed这个描述器中的__get__方法

   若是修改,则会访问__set__方法

 

ORM模型

  O(object):类和对象

  R(Relation):关系,关系数据库中的表格

  M(Mapping):映射

  

 

   ORM框架功能:

    -- 建立模型类型和表之间的对应关系,允许我们通过面向对象的方式来操作数据库

    -- 根据设计的模型类生成数据库中的表格

    -- 通过方便的配置就可以进行数据库的切换

  数据库的字段类型

    -- mysql常用数据类型

      -- 整数:int,bit

      -- 小数:decimal(decimal表示浮点数,如decimal(5,2)表示共存5位数,小数占2位)

      -- 字符串:varchar,char(varchar可变长度,char不可变长度)

      -- 日期时间:date,time,datetime

      -- 枚举类型(enum)

    -- ORM模型中对应的字段(下面Django的ORM模型中选取的几个字段)

      类型                描述

      BooleanField            布尔字段,值为True或False

      CharField(max_length=最大长度)  字符串,参数max_length表示最大字符个数

    

 

posted @ 2022-01-19 15:56  哩子吖  阅读(151)  评论(0)    收藏  举报