一切皆对象和深浅拷贝

1.元类

元类的来源是:python中一切皆对象。

1.1 什么是元类

元类就是用来实例化产生类的类

关系:元类—实例化—类(自定义的类)—实例化—-对象(obj)

1.2如何查看内置的元类

1.type是内置的元类
2.我们用class关键字定义出来的所有类以及内置的类都是由内置的元类type实例化产生的

例如:在python中int、dict内置元类都继承自object类,int和dict又都是type元类的对象

print&#xFF08;type&#xFF08;int&#xFF09;&#xFF09;  # <class 'type'>
print&#xFF08;type&#xFF08;dict&#xFF09;&#xFF09; # <class 'type'>
</class></class>

那么type和object又是什么关系呢?我们来type一下object和type!

print(type(type))  #<class 'type'>
print(type(object)) #<class 'type'>
</class></class>

其实:

1.object的元类其实是type类,object是由type类构造出来的对象
2.type是自己的对象(指针指向了自己)
3.type类又继承了object类

1.3class机制分析

1.1一切皆对象的好处

它可以通过一切皆对象,使得任何类型的变量值能够赋值给变量!
因为, 其本质是变量都指向了一个内存地址,而并不是直接指向具体的数据(在其他语言中不能这样)

一切皆对象和深浅拷贝

2.深浅拷贝

1.赋值,本质是多了一个变量指向另一个变量的内存地址

l = [11,22,[311,444,55]]
l2 = l # &#x8D4B;&#x503C;&#x64CD;&#x4F5C;&#xFF0C;&#x672C;&#x8D28;&#x5C31;&#x662F;l2&#x6307;&#x5411;&#x4E86;l&#x7684;&#x5185;&#x5B58;&#x5730;&#x5740;
print(l2 is l) # &#x7ED3;&#x679C;&#x4E3A;true

一切皆对象和深浅拷贝

2.浅拷贝,本质是又拷贝一份内存地址指向对应的变量值

from copy import copy
l = [111,222,[333,444]]
l3 = copy(l) # &#x6D45;&#x62F7;&#x8D1D;&#xFF0C;&#x53EA;&#x662F;&#x62F7;&#x8D1D;&#x4E86;l&#x7684;&#x5185;&#x5B58;&#x5730;&#x5740;
print(l3 is l) # &#x7ED3;&#x679C;&#x4E3A;false
&#x4FEE;&#x6539;l3&#x7684;&#x5217;&#x8868;&#x503C;&#xFF0C;l&#x4E5F;&#x4F1A;&#x6539;&#x53D8;&#xFF01;

一切皆对象和深浅拷贝

3.深拷贝:本质内存地址、值全部拷贝一份,非常占内存!

from copy import deepcopy

l = [111,222,[333,444]]
l4 = deepcopy(l)
print(l4 is l) # &#x7ED3;&#x679C;&#x4E3A;false
&#x6DF1;&#x62F7;&#x8D1D;&#x662F;&#x628A;&#x5185;&#x5B58;&#x5730;&#x5740;&#x3001;&#x53D8;&#x91CF;&#x503C;&#x5168;&#x90E8;&#x62F7;&#x8D1D;&#x4E86;&#x4E00;&#x4EFD;&#xFF0C;&#x6240;&#x4EE5;&#x4FEE;&#x6539;l4&#x4E2D;&#x5217;&#x8868;&#x7684;&#x503C;&#xFF0C;l&#x5E76;&#x4E0D;&#x4F1A;&#x6539;&#x53D8;
&#x6CE8;&#x610F;&#xFF1A;&#x6DF1;&#x62F7;&#x8D1D;&#xFF0C;&#x62F7;&#x8D1D;&#x7684;&#x65F6;&#x5019;l&#x5217;&#x8868;&#x91CC;&#x9762;&#x7684;&#x4E0D;&#x53EF;&#x53D8;&#x7C7B;&#x578B;&#x5730;&#x5740;&#x5E76;&#x4E0D;&#x4F1A;&#x6539;&#x53D8;&#xFF0C;&#x6539;&#x53D8;&#x7684;&#x662F;&#x53EF;&#x53D8;&#x7C7B;&#x578B;&#x7684;&#x5730;&#x5740;&#xFF01;&#xFF01;

Original: https://www.cnblogs.com/suncolor/p/16638240.html
Author: 等日落
Title: 一切皆对象和深浅拷贝

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/498559/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球