Python(面向对象-02)

Python基础
-6-面向对象-02

一、生命周期

1、概念:指的是一个对象,从诞生到消亡的过程,当一个对象被创建时,会在内存中分配相应的内存空间进行储存,当这个对象不再使用时,为了节约内存,就会把这个对象释放。

2、监听对象生命周期
_ _new_ _方法:当我们创建一个对象时,用于给这个对象分配内存的方法, 通过拦截这个方法,可以修改对象的创建过程
_ _init_ _方法:当我们创建一个对象后,自动执行的方法(初始化方法)
_ _del_ _方法:当我们删除一个对象后,自动执行的方法

3、储存方面
(1)在Python中万物皆对象, 不存在基本数据类型, 0,1.2,True,"abc"等都是对象
(2)所有对象,都会在内存中开辟一块空间进行储存,会根据不同的数据类型以及内容,开辟不同的空间大小进行储存,返回该空间的地址给外界接收(称为“引用”),用于后续对这个的操作
(3)可通过id()函数获取内存地址(10进制)
(4)可通过hex()函数查看对应的16进制地址;例:hex(id(xxx))
(5)对于整数和短小的字符,Python会进行缓存;不会创建多个相同的对象
(6)容器对象储存的其他对象,仅仅是其他对象的引用,并不是其他对象本身

4、垃圾回收方面

(1)引用计数器
一个对象,会记录着自身被引用的个数(引用个数为0时被自动释放)
每增加一个引用,这个对象的引用计数会自动+1
每减少一个引用,这个对象的引用计数会自动-1

        查看引用计数(注意会大1)

import  sys
sys.getrefcount(对象)

(2)垃圾回收

主要作用:从经历过“引用计数器”仍未被释放的对象中,找到“循环引用”,清理相关对象(即解决循环引用问题)
        循环引用图解


二、面向对象三大特征

1、封装
        概念:

 将一些属性和方法封装在一个对象中,对外隐藏内部具体实现细节,内部实现,外界不需要关心,外界只需要根据“内部提供的接口”去使用就可以
        好处:

(1)使用起来更加方便,因为已经把很多相关功能封装成一个整体,类似于外界提供的一个工具箱,针对不同的场景,使用不同的工具箱就可以

(2)保证数据安全, 针对安全级别比较高的数据,可以设置成“私有”,可以控制数据为只读,外界无法修改,也可以拦截数据的写操作,进行数据校验和过滤

(3)利于代码维护,如果后期,功能代码需要维护,则直接修改这个类内部代码即可;只要保证接口名称不变,外界不需要做任何代码修改。

2、继承

概念: 现实中的“继承”,子女继承父母的“财产资源”;编程中的“继承”,一个类“拥有”另一个类的指“非私有的”属性和方法
目的:方便资源重用

分类:

(1)概念: 仅仅继承了一个父类

(2)概念:继承了多个父类

资源的继承:
在Python中继承指资源的使用权,所以,测试某个资源能否被继承,其实就是测试在子类中,能不能访问到父类中这个资源
结论:除了私有属性和私有方法,其他的基本都能继承
公有属性/方法
受保护属性/方法
内置方法

继承的几种形态:
单继承链
无重叠的多继承链
有重叠的多继承链


 

几种形态应该遵循的标准原则

 资源的覆盖:
包括:属性的覆盖,方法重写
原理:在MRO资源检索链中,优先级高的类写入了一个和优先级较低类同名的一个资源(属性或方法),去使用相关资源时,优先选择优先级较高的资源;从而造成“覆盖的假象”
注意事项:当调用优先级较高的资源时,注意self变化,谁调用方法:self就是谁, cls参数就是谁对应的类

资源的累加:对于重写__init__()方法增属性时,调用父类的__init__()方法。
super(),根据上下文环境自动判断,ython3+
查看某个类资源查找顺序:
法1:
import  inspect
inspect.getmro(类)
法2:
    类名._ _mro_ _
法3:
    类名.mro()

3、多肽
概念:
一个类,所延伸的多种形态,调用时的多种形态,(其它语言)在继承的前提下;使用不同的子类,调用父类的同一个方法,产生不同的功能

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值