持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第5天,点击查看活动详情
本文已参与「新人创作礼」活动,一起开启掘金创作之路。
python的类
python的类和jiava的类及其相似,有类的属性,方法,但是java是单继承,python是多继承的
python中的__init__ 和JAVA里的构造函数类似
- getattr(obj, name[, default]) : 访问对象的属性。
- hasattr(obj,name) : 检查是否存在一个属性。
- setattr(obj,name,value) : 设置一个属性。如果属性不存在,会创建一个新属性。
- delattr(obj, name) : 删除属性
深拷贝和浅拷贝
首先深拷贝和浅拷贝都是对象的拷贝,都会生成一个看起来相同的对象,他们的本质区别是拷贝出来的对象的地址是否和原对象一样,也就是地址的赋值还是值得赋值的区别(浅拷贝地址的赋值,深拷贝值的赋值)
在浅拷贝时,拷贝出来的新对象的地址和原对象是不一样的,但是新对象里面的可变元素(如列表)的地址和原对象里的可变元素的地址是相同的,也就是说浅拷贝它拷贝的是浅层次的数据结构(不可变元素),对象里的可变元素作为深层次的数据结构并没有被拷贝到新地址里面去,而是和原对象里的可变元素指向同一个地址,所以在新对象或原对象里对这个可变元素做修改时,两个对象是同时改变的,但是深拷贝不会这样,这个是浅拷贝相对于深拷贝最根本的区别。
对象有类型,变量无类型,变量是对象的标签
浅拷贝:
深拷贝:
大多数情况下,编写程序时都是使用浅拷贝,除非有特定的需求;浅拷贝的优点:拷贝速度快,占用空间少,拷贝效率高。
时间角度:浅拷贝花费时间更少;
空间角度:浅拷贝花费内存更少;
效率角度:浅拷贝只拷贝顶层数据,一般情况下比深拷贝效率高。