Python学习

Python学习笔记-第5天: 面向对象(2) 、模块、包

2019-12-09  本文已影响0人  6d1bf2ffc4f3

第五天 函数和面向对象(2)

今天主要学习面向对象的三大特征:封装、继承、多态以及简单的设计模式和模块化。学习项目及练习源码地址:GitHub源码

面向对象的三大特征

object类

object类是所有类的父类,因此所有的类都有object类的属性和方法。类定义中没有指定父类,则默认父类是object类。

封装

隐藏对象的属性和实现细节,外提供必要的方法。相当于将“细节封装起来”,只对外暴露“相关调用方法”。通过Python的“私有属性、私有方法”的方式,来实现“封装”。Python没有严格的语法级别的“访问控制符”,更多的是依靠程序员自觉实现。

继承

继承可以让子类具有父类的特性,提高了代码的重用性。
从设计上是一种增量进化,原有父类设计不变的情况下,可以增加新的功能,或者改进已有的算法(重写也叫重载父类的方法)。

多态

多态(polymorphism)是指同一个方法调用由于对象不同可能会产生不同的行为。

简单的设计模式

什么是设计模式?

前人总结的一系列解决各种场景问题的套路。

工厂模式

顾名思义:所谓工厂模式就是一个对象根据调用参数的不同,可以生产许多不同的对象。

class StarFactory:
    def __init__(self):
        print("欢迎使用明星工厂")
    def createStar(self,name):
        if name == 'man':
            return ManStar()
        elif name == "womam":
            return WomanStar()
class ManStar:
    def __init__(self):
        print("我是一名超级男明星")
class WomanStar:
    def __init__(self):
        print("我是一名超级女明星")

单列模式

单例模式(Singleton Pattern)的核心作用是确保一个类只有一个实例,并且提供一个访问该实例的全局访问点。单例模式只生成一个实例对象,减少了对系统资源的开销。当一个对象的产生需要比较多的资源,如读取配置文件、产生其他依赖对象时,可以产生一个“单例对象”,然后永久驻留内存中,从而极大的降低开销。

模块和包

使用模块化编程便于将一个任务分解成多个模块,实现团队协同开发,完成大规模程序。实现代码复用和可维护性。

模块

导入模块

测试模块

测试代码

当需要把多个模块放在一起时,需要就需要用到包了

安装第三方库

pip install 模块名称

Python的文件操作

文本文件和二进制文件

文件操作相关模块概述

Python标准库中提供了如下常用文件操作的库:

名称 说明
io 模块 文件流的输入和输出操作 input output
os 模块 基本操作系统功能,包括文件操作
glob 模块 查找符合特定规则的文件路径名
fnmatch 模块 使用模式来匹配文件路径名
fileinput 模块 处理多个输入文件
filecmp 模块 用于文件的比较
cvs 模块 用于 csv 文件处理
pickle 和 cPickle 用于序列化和反序列化
xml 包 用于 XML 数据处理
bz2、gzip、zipfile、zlib、tarfile 用于处理压缩和解压缩文件(分别对应不同的算法)

常用文件操作函数

os和os.path模块

os模块可以帮助我们直接对操作系统进行操作。我们可以直接调用操作系统的可执行文件、命令,直接操作文件、目录等等

异常和错误处理

python中,引进了很多用来描述和处理异常的类,称为异常类。异常类定义中包含了该类异常的信息和对异常进行处理的方法。


错误类型

如何定位异常

当发生异常时,Python解释器会报相关的错误信息,并会在控制台打印出相关错误信息。只需按照从上到下的顺序即可追溯(Trackback)错误发生的过程,最终定位引起错误的那一行代码。

异常处理语句

return语句和异常处理问题

在try....except语句中最好不要用return语句,将它放在try之外。

常见异常汇总

异常名称 说明
ArithmeticError 所有数值计算错误的基类
AssertionError 断言语句失败
AttributeError 对象没有这个属性
BaseException 所有异常的基类
DeprecationWarning 关于被弃用的特征的警告
EnvironmentError 操作系统错误的基类
EOFError 没有内建输入,到达 EOF 标记
Exception 常规错误的基类
FloatingPointError 浮点计算错误
FutureWarning 关于构造将来语义会有改变的警告
GeneratorExit 生成器(generator)发生异常来通知退出
ImportError 导入模块/对象失败
IndentationError 缩进错误
IndexError 序列中没有此索引(index)
IOError 输入/输出操作失败
KeyboardInterrupt 用户中断执行(通常是输入^C)
KeyError 映射中没有这个键
LookupError 无效数据查询的基类
MemoryError 内存溢出错误(对于 Python 解释器不是致命的)
NameError 未声明/初始化对象 (没有属性)
NotImplementedError 尚未实现的方法
OSError 操作系统错误
OverflowError 数值运算超出最大限制
OverflowWarning 旧的关于自动提升为长整型(long)的警告
PendingDeprecationWarning 关于特性将会被废弃的警告
ReferenceError 弱引用(Weak reference)试图访问已经垃圾回收了的对象
RuntimeError 一般的运行时错误
RuntimeWarning 可疑的运行时行为(runtime behavior)的警告
StandardError 所有的内建标准异常的基类
StopIteration 迭代器没有更多的值
SyntaxError Python 语法错误
SyntaxWarning 可疑的语法的警告
SystemError 一般的解释器系统错误
SystemExit 解释器请求退出
TabError Tab 和空格混用
TypeError 对类型无效的操作
UnboundLocalError 访问未初始化的本地变量
UnicodeDecodeError Unicode 解码时的错误
UnicodeEncodeError Unicode 编码时错误
UnicodeError Unicode 相关的错误
UnicodeTranslateError Unicode 转换时错误
UserWarning 用户代码生成的警告
ValueError 传入无效的参数
Warning 警告的基类
WindowsError 系统调用失败
ZeroDivisionError 除(或取模)零 (所有数据类型)

自定义异常类

程序开发中,有时候我们也需要自己定义异常类。自定义异常类一般都是运行时异常,通常继承Exception或其子类即可。命名一般以 Error、Exception为后缀。

小结

到目前为止,Python语言的真实基础算是告一个段落。离登堂入室还有半步飞仙的距离了。接下来做的就是实战+实战+实战,将所学的知识融会贯通。之后还有关于Python高阶的学习,比如并发,异步程序,网络编程等等。

GUI实战

话说Python搞后台服务的较多,但是跨平台的GUI开发其实也不弱,通过几个GUI的练习,巩固一下前面所学的知识。

常用的GUI库

Tkinter编写一个GUI程序

上一篇 下一篇

猜你喜欢

热点阅读