2019-05-07_day_16面向对象_运算符重载

day_16_运算符重载


python中所有的数据类型都是类,数据都是对象

所有的运算符对应的操作,本质都是在调用数据类型对应的魔法方法。(每个运算符都对应一个固定的魔法方法)


copy

一个变量直接给另外一个变量赋值:直接将地址赋值,赋值完后两个变量指向同一块内存区域,并且相互影响

拷贝基本原理:将被拷贝的对象复制一份产生一个新的数据然后将新的数据的地址返回。

浅拷贝

列表或字典的copy方法是浅拷贝、切片也是浅拷贝

copy.copy(对象) - 赋值指定的对象,产生一个新的对象(不会复制子对象)

深拷贝

copy.deepcopy(对象) - 复制指定对象产生一个新的对象。如果这个对象中有其他的对象,子对象也会被复制

内存管理

1.数据的存储(内存的开辟)

python的变量都存储在栈区间,对象都在堆区间

声明变量或者给变量赋值,是现在内存(堆)中开辟存储数据,然后将数据地址保存在变量中

但是数字和字符串特殊,如果是用数字或字符串给变量赋值,不会直接开辟空间保存数据,而是先在内存检测这个数据之前是否已经存储过,如果已经存储直接用上次保存的数据,没有存储才会开辟新的空间保存数据。

2. 内存的释放

2-1 引用计数

python中每个对象都有一个属性叫引用计数,用来保存当前对象的引用的个数

2-2 python中的垃圾回收机制来判断一个对象是否销毁,就看这个对象的引用计数是否为零,如果为零就会被销毁。

让引用计数增加 :继续赋值

让引用计数减少 :赋值其它的值或者删除

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Swift1> Swift和OC的区别1.1> Swift没有地址/指针的概念1.2> 泛型1.3> 类型严谨 对...
    cosWriter阅读 11,161评论 1 32
  • 1.设计模式是什么? 你知道哪些设计模式,并简要叙述?设计模式是一种编码经验,就是用比较成熟的逻辑去处理某一种类型...
    龍飝阅读 2,229评论 0 12
  • 内存管理 简述OC中内存管理机制。与retain配对使用的方法是dealloc还是release,为什么?需要与a...
    丶逐渐阅读 2,028评论 1 16
  • 307、setValue:forKey和setObject:forKey的区别是什么? 答:1, setObjec...
    AlanGe阅读 1,605评论 0 1
  • 后来的我们,又回到了我和你…所有人的人生大抵都相似,爱过一个人,匆匆又离开,一生在相遇、告别、重逢、怀念里蹉跎。有...
    YangL5阅读 153评论 0 0