Python基础笔记(八)

私有属性和私有方法(实现封装)

Python 对于类的成员没有严格的访问控制限制,这与其他面向对象语言有区别。关于私有

属性和私有方法,有如下要点:

1. 通常我们约定,两个下划线开头的属性是私有的(private)。其他为公共的(public)。

2. 类内部可以访问私有属性(方法)

3. 类外部不能直接访问私有属性(方法)

4. 类外部可以通过“

_类名__私有属性(方法)名”访问私有属性(方法)

属性和方法命名总结

· _xxx:保护成员,不能用“

from module import * ”导入,只有类对象和子类对象能访

问这些成员。

· __xxx__:系统定义的特殊成员

· __xxx: 类中的私有成员,只有类对象自己能访问,子类对象也不能访问。(但,在类外

部可以通过“对象名. _类名__xxx”这种特殊方式访问。Python 不存在严格意义的私有成员)

类编码风格

1. 类名首字母大写,多个单词之间采用驼峰原则。

2. 实例名、模块名采用小写,多个单词之间采用下划线隔开。

3. 每个类,应紧跟“文档字符串”,说明这个类的作用。

4. 可以用空行组织代码,但不能滥用。在类中,使用一个空行隔开方法;模块中,使用两

个空行隔开多个类。

面向对象三大特征介绍

Python 是面向对象的语言,也支持面向对象编程的三大特性:继承、封装(隐藏)、多态。

·封装(隐藏)

隐藏对象的属性和实现细节,只对外提供必要的方法。相当于将“细节封装起来”,只

对外暴露“相关调用方法”。

通过前面学习的“私有属性、私有方法”的方式,实现“封装”。Python 追求简洁的

语法,没有严格的语法级别的“访问控制符”,更多的是依靠程序员自觉实现。

·继承

继承可以让子类具有父类的特性,提高了代码的重用性。

从设计上是一种增量进化,原有父类设计不变的情况下,可以增加新的功能,或者改进

已有的算法。

类成员的继承和重写

1. 成员继承:子类继承了父类除构造方法之外的所有成员。

2. 方法重写:子类可以重新定义父类中的方法,这样就会覆盖父类的方法,也称为“重写”

查看类的继承层次结构

通过类的方法 mro()或者类的属性__mro__可以输出这个类的继承层次结构。

object 根类

object 类是所有类的父类,因此所有的类都有 object 类的属性和方法。我们显然有必要深

入研究一下 object 类的结构。对于我们继续深入学习 Python 很有好处。

dir()查看对象属性

为了深入学习对象,我们先学习内置函数 dir(),他可以让我们方便的看到指定对象所有的

属性。

重写__str__()方法

object 有一个__str__()方法,用于返回一个对于“对象的描述”,对应于内置函数 str()

经常用于 print()方法,帮助我们查看对象的信息。__str__()可以重写。

多重继承

Python 支持多重继承,一个子类可以有多个“直接父类”。这样,就具备了“多个父

类”的特点。但是由于,这样会被“类的整体层次”搞的异常复杂,尽量避免使用。

MRO()

Python 支持多继承,如果父类中有相同名字的方法,在子类没有指定父类名时,解释器将

“从左向右”按顺序搜索。

MRO(Method Resolution Order):方法解析顺序。 我们可以通过 mro()方法获得

“类的层次结构”,方法解析顺序也是按照这个“类的层次结构”寻找的。

多态

1. 多态是方法的多态,属性没有多态。

2. 多态的存在有 2 个必要条件:继承、方法重写。

对象的浅拷贝和深拷贝

·变量的赋值操作

只是形成两个变量,实际还是指向同一个对象。

·浅拷贝

Python 拷贝一般都是浅拷贝。拷贝时,对象包含的子对象内容不拷贝。因此,源对象

和拷贝对象会引用同一个子对象。

·深拷贝

使用 copy 模块的 deepcopy 函数,递归拷贝对象中包含的子对象。源对象和拷贝对象

所有的子对象也不同。

组合

“is-a”关系,我们可以使用“继承”。从而实现子类拥有的父类的方法和属性。“is-a”

关系指的是类似这样的关系:狗是动物,dog is animal。狗类就应该继承动物类。

“has-a”关系,我们可以使用“组合”,也能实现一个类拥有另一个类的方法和属性。”

has-a”关系指的是这样的关系:手机拥有 CPU。 MobilePhone has a CPU。

设计模式_工厂模式实现

设计模式是面向对象语言特有的内容,是我们在面临某一类问题时候固定的做法,设计

模式有很多种,比较流行的是:GOF(Goup Of Four)23 种设计模式。当然,我们没有

必要全部学习,学习几个常用的即可。

对于初学者,我们学习两个最常用的模式:工厂模式和单例模式。

工厂模式实现了创建者和调用者的分离,使用专门的工厂类将选择实现类、创建对象进

行统一的管理和控制。

设计模式_单例模式实现

单例模式(Singleton Pattern)的核心作用是确保一个类只有一个实例,并且提供一

个访问该实例的全局访问点。

单例模式只生成一个实例对象,减少了对系统资源的开销。当一个对象的产生需要比较

多的资源,如读取配置文件、产生其他依赖对象时,可以产生一个“单例对象”,然后永久

驻留内存中,从而极大的降低开销。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值