python对象模型

Posted not_enough

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python对象模型相关的知识,希望对你有一定的参考价值。

python的对象
python对象由两部分构成:类型标识符(标识对象类型)、引用计数器(垃圾回收机制需要)
每一个对象都有两个标准的头部信息:一个类型标识符去标识这个对象的类型;一个引用的计数器,用来决定是不是可以回收这个对象;
对象和变量的关系
1、变量(实质是指针)和对象分别保存在内存的不同部分
2、变量总是指向对象,并且绝不会指向其他变量上,但是更大的对象可能连接到其他的对象;
3、在Python内部,作为一种优化,Python预先缓存了一些不变的对象并对其进行复用;
  例如:None对象,None是python定义来表示空值,内存中有一块地址保存它
对象的类别
可变对象与不可变对象
可变对象一旦创建之后还可调用函数改变但是地址不会发生改变,即该变量指向的还是原来的对象。
有  :list,dictionary,set
不可变对象则相反,创建之后不能更改,如果调用更改函数会返回一个新的对象。 
有:int,string,float,tuple
额外知识:对象的深拷贝与浅拷贝
浅拷贝:只是将引用指向同一块内存地址,
深拷贝:新创建一块内存用于储存被拷贝对象的值。
    注意:深拷贝像文件夹一样层层递归性,即每当发现里面是个引用,便依次深拷贝
代码:
浅拷贝:a=b
深拷贝:a=copy.deepcopy(b)
第一层的拷贝:a=copy.copy(b),注意的是copy.copy函数会根据当前拷贝对象类型进行拷贝操作的选择。
                若是不可变类型,则转为浅拷贝。若是可变类型,则进行深拷贝(但是并不具有递归效果)























以上是关于python对象模型的主要内容,如果未能解决你的问题,请参考以下文章

Python/DJango Attributeerror:模型对象没有属性对象

python+playwright 学习-9.页面对象模型Page Object Models

Python数据模型文档:一个未绑定的用户定义方法对象和一个类方法对象

如何将 django/python 中的模型对象列表序列化为 JSON

text Python对象模型,选项卡结构和语句终止

是否可以在内存映射文件中存储python对象(特别是sklearn模型)?