找回密码
 立即注册

推荐阅读

  • 便民服务
  • 关注我们
  • 社区新手
浅拷贝是创建一个新对象,这个对象有着原始对象属性值的一份精确拷贝。如果属性是基本类型,拷贝的就是基本类型的值,如果属性是引用类型,拷贝的就是内存地址 。
深拷贝是将一个对象从内存中完整的拷贝一份出来,从堆内存中开辟一个新的区域存放新对象。
区别:浅拷贝基本类型之前互不影响,引用类型其中一个对象改变了地址,就会影响另一个对象;
深拷贝,改变新对象不会影响原对象,他们之前互不影响。
# #深拷贝
# import copy
# list1=[['北京多测师','成都多测师',],'上海多测师','深圳多测师']
list2=copy.deepcopy(list1)#进行深拷贝
#打印列表内存地址  不一致的
print(id(list1))
print(id(list2))
#打印子列表的内存地址 不一致
print(id(list1[0]))
print(id(list2[0]))
#修改拷贝后list2
list2[0][0]='武汉多测试'
print(list2)
print(list1)
打印修改后的修改后的列表,结果list2列表修改了不影响list1

#浅拷贝
import copy
list1=[['北京多测师','成都多测师',],'上海多测师','深圳多测师']
list2=copy.copy(list1)#浅拷贝
#打印2个列表内存地址
print(id(list1))
print(id(list2))
#打印2个子列表内存
print(id(list1[0]))
print(id(list2[0]))
#修改list2列表数据
list2[0][0]='武汉多测师'
print(list2)
print(list1)
打印修改后的列表,结果list1列表数据随之改变

import copy
a=2
print(id(a))
print(type(a))

b =3
print(id(b))
print(type(b))

b=2
print(id(b))
print(type(b))
上述代码可理解为 2 3是两个人 a,b分别是题目名字
就算3这个人的名字给到2这个人 2这个人是不会变的:(这里的变指的是内存中的地址)

类 class 定义 用来描述具有相同属性和方法的对象的集合
可以理解是一个模板,通过他可以创建出无数个具体的实例,

对象:类不能直接使用,通过类创建出实例(对象)
这个有点向汽车图纸和汽车的关系,图纸本身类不能被人直接使用
通过图纸创造出汽车(对象)才能使用:

对象和类的关系就想模具和铸件的关系
类的实例化的结果就是对象,而对象的抽象体就是类,

属性:类中的所有变量称为属性,
在python中定义类通过class 关键字 进行定义
class Dcs(Object)
注 class 后面接着是类名称 即dcs 类名称通常大写开头
后面(object)表示该类从那个类继承下来,如果没有合适类,就使用object类

类名称定义
不要用纯数字命名
不要以python中保留字符命名
不要以文件名命名
不要见到且见名知意
当类名称有多个单词,才用驼峰--Dcs
a=300#全局变量
class Dcs():#定义类
    a1=200#类变量(如果方法中要调用它需要加self)
    def __init__(self,name):#构造函数
        self.a2=name#实例变量#把形参变为实例变量(类的全局变量)

    def A1(self):
        print(a)#打印全局变量
        print(self.a1)#打印类变量
        print(self.a2)#打印实例变量
if __name__ == '__main__':#调用函数
    c=Dcs(100)#创建对象
    c.A1()#对象调用方法

分享至 : QQ空间
收藏

1 个回复

倒序浏览
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册