python再复习(5)OOP、错误处理、IO

环境:win7 pycharmCE_2017.2 python3.6.2

之前一直学习的的是c语言,所以对面向对象的编程思想不是很能理解。

8.面向对象编程

遇到的第一个概念的类和对象,我的理解里,类就是一种定义,像int这个关键字,他不存在什么实际的变量,但它是一个定义,int a;之后a作为一个整形变量出现了,a就叫实例。
定义类和创建实例蛮简单的,和创建函数差不多,def换成class就好了,然后就是def init的使用。
关于访问限制,在实例的属性前加双下划线,但是这样做仍然可以在外部访问,但是强烈不建议这么做,应该使用内部的方法去读取和修改。
继承和多态暂时总结不出什么,慢慢做flask后可能会有体会吧。
数据封装、继承和多态只是面向对象程序设计中最基础的3个概念。
使用slots进行属性的限制要注意,slots定义的属性仅对当前类实例起作用,对继承的子类是不起作用的。
还可以用MethodType给实例绑定方法。
@property装饰器
通过多重继承,一个子类就可以同时获得多个父类的所有功能(MixIn)。
一些特殊函数:slots len str repr iter getitem getattr call以及callable()。

枚举类:

from enum import Enum

metaclass非常强大,日后可以倒回来尝试写一个简单的ORM框架。

9.错误处理

try…except…finally…
logging模块

10.IO

f=open()
f.read()
f.close()

由于文件读写时都有可能产生IOError,一旦出错,后面的f.close()就不会调用。所以,为了保证无论是否出错都能正确地关闭文件,我们可以使用try … finally来实现:

try:
f = open(‘/path/to/file’, ‘r’)
print(f.read())
finally:
if f:
f.close()
但是每次都这么写实在太繁琐,所以,Python引入了with语句来自动帮我们调用close()方法:

with open(‘/path/to/file’, ‘r’) as f:
print(f.read())

调用read()会一次性读取文件的全部内容,如果文件有10G,内存就爆了,所以,要保险起见,可以反复调用read(size)方法,每次最多读取size个字节的内容。另外,调用readline()可以每次读取一行内容,调用readlines()一次读取所有内容并按行返回list.
像open()函数返回的这种有个read()方法的对象,在Python中统称为file-like Object。除了file外,还可以是内存的字节流,网络流,自定义流等等。file-like Object不要求从特定类继承,只要写个read()方法就行。
要读取非UTF-8编码的文本文件,需要给open()函数传入encoding参数,例如,读取GBK编码的文件:
f = open(‘/Users/michael/gbk.txt’, ‘r’, encoding=’gbk’)
当以某种编码打开时,在写文件时也会以这种编码写入。
操作文件和目录暂时用不到。
序列化也是。
到进程和线程了,这个还比较了解。一个任务是一个进程,一个进程下通常有很多线程,可以理解成一个任务下的很多歌小任务。多进程的知识点有进程池、queque。多线程的使用相对来说简单一些,启动一个线程就是把一个函数传入并创建Thread实例,然后调用start()开始执行。锁和解锁。
后面都是些常用模块,根据经验,我觉得先知道是怎么回事比较好,先不花时间过度深入,开始继续从flask那本书的第七章继续学习。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值