学习笔记之--with、ORM

with

with是上下问管理器的关键字,使用了with那么一开始就会先判断后面这个实例对象是不是一个上下文管理器,如果检测到有__enter__()和__exit__(),那么它就是一个上下文管理器,此时就会先调用__enter__()方法,然后as后面的变量将会指向__enter__()的返回值。然后进行读写,当读写过程中出现异常,将会立刻调用__exit__()将这个文件关闭。

上下文管理器的另一只实现方式

在python3中有contextlib这样一个模块,里面有一个contextmanager的装饰器,通过yield将函数分割成两部分,yield之前的部分是在__enter__()中执行,而yield之后的部分是在__exit__()中执行,yield后面紧跟的是函数的返回值

可变类型和不可变类型

可变类型(mutable):变量进行append、+=等这种操作后 == 改变了变量的值,而不会新建一个对象,变量引用的对象的地址也不会变化,不过对于相同的值的不同对象,在内存中则会存在不同的对象,即每个对象都有自己的地址,相当于内存中对于同值的对象保存了多份,这里不存在引用计数,是实实在在的对象。

list
dict
set
bytearray
user-defined classes (除非是特别定义的不可变)

不可变类型(immutable):改变了变量的值 == 新建了一个对象,而对于相同的值的对象,在内存中则只有一个对象(一个地址), python的id() 方法让你明白

int
float
decimal
complex
bool
string
tuple
range
frozenset
bytes

ORM框架(简单了解)

O是object,也就类对象的意思,R是relation,翻译成中文是关系,也就是关系数据库中数据表的意思,M是mapping,是映射的意思。在ORM框架中,它帮我们把类和数据表进行了一个映射,可以让我们通过类和类对象就能操作它所对应的表格中的数据。ORM框架还有一个功能,它可以根据我们设计的类自动帮我们生成数据库中的表格,省去了我们自己建表的过程。

通过元类实现简单的ORM
元类就是可以创建类的对象。 创建一个类首先会执行__new__()函数,后面自动调用__init__(),因此我们可以通过元类去修改一个类里面的内容,让这个类达到去做别的事。
首先创建一个类继承自type 类里面重写__new__方法处理函数。
下面写一个Model类需要,class xxx(object, metaclass=继承type那个类名)
类里面写属性和列。定义一个save函数。
在下面创建这个类的对象,这个对象传递属性和值进去。

从而达到操作数据库的效果。 即继承type那个类将下面这个的属性定义替换成了__new__做的内容。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值