python有几个阶段_Python阶段总结II

一、Python的面向对象

类(Class):用来描述具有相同的属性和方法的对象的集合。它定义了该集合中每个对象所共有的属性和方法。对象是类的实例。

类变量:类变量在整个实例化的对象中是公用的。类变量定义在类中且在函数体之外。类变量通常不作为实例变量使用。

数据成员:类变量或者实例变量用于处理类及其实例对象的相关的数据。

方法重写:如果从父类继承的方法不能满足子类的需求,可以对其进行改写,这个过程叫方法的覆盖(override),也称为方法的重写。

实例变量:定义在方法中的变量,只作用于当前实例的类。

继承:即一个派生类(derived class)继承基类(base class)的字段和方法。继承也允许把一个派生类的对象作为一个基类对象对待。

实例化:创建一个类的实例,类的具体对象。

方法:类中定义的函数。

对象:通过类定义的数据结构实例。对象包括两个数据成员(类变量和实例变量)和方法。

实例

以下是一个简单的Python类实例:

1253021-20171023083226535-1917178757.png

创建类的实例对象

实例化类其他编程语言中一般用关键字 new,但是在 Python 中并没有这个关键字,类的实例化类似函数调用方式。

以下使用类的名称GasCar和ElecCar 来实例化,并通过 __init__ 方法接受参数。

"创建 GasCar 类的第一个对象"gcar=GasCar("BMW")

gcar.fill_fuel(50.0)

gcar.run(0)"创建 ElecCar 类的第一个对象"ecar=ElecCar("Tesla")

ecar.fill_fuel(60.0)

ecar.run(200.0)

完整属性:

classCar:def __init__(self,name):

self.name=name

self.remain_mile=0deffill_fuel(self,miles):

self.remain_mile=milesdefrun(self,miles):print (self.name,end=':')if self.remain_mile>=miles:

self.remain_mile-=milesprint("run %d miles!"%(miles,))else:print("fuel out!")classGasCar(Car):deffill_fuel(self,gas):

self.remain_mile=gas*6.0

classElecCar(Car):deffill_fuel(self,power):

self.remain_mile=power*3.0gcar=GasCar("BMW")

gcar.fill_fuel(50.0)

gcar.run(0)

ecar=ElecCar("Tesla")

ecar.fill_fuel(60.0)

ecar.run(200.0)

执行以上代码输出结果如下:

BMW:run 0 miles!

Tesla:fuel out!

Python的基础重载方法:

__init__:这是类的构造方法,如果需要自己实现类构造方法那份重载该方法便可__del__ :析构方法,这是在销毁对象的时候调用的方法,del对象时会调用该方法__repr__ :转化为供解释器读取的形式__str__ :用于将值转化为适于人阅读的形式,eg printobject 这时会调用object对象的__str__方法__cmp__ :比较器方法,对 int、str 等内置数据类型排序时,Python的 sorted() 按照默认的比较函数 cmp 排序,但是,如果对一组 Student 类的实例排序时,就必须提供我们自己的特殊方法__cmp__()

Python的运算符重载:

classForce:def __init__(self,x,y):

self.fx, self.fy=x,ydefshow(self):print("Force<%s,%s>"%(self.fx, self.fy))defadd(self,force2):

x=self.fx +force2.fx

y=self.fy +force2.fyreturnForce(x, y)def __str__(self):return "Force<%r,%r>" %(self.x, self.y)def __mul__(self, n):

x, y=self.x+ n, self.y+nreturnForce(x, y)def __add__(self, other):

x,y=self.x+other.x, self.y+other.yreturnForce(x, y)def __eq__(self, other):return(self.x == other.x ) and (self.y ==other.y)def __repr__(self):return "Force({0.x!r},{0.y!r})".format(self)

f1=Force(0,1)

f1.show()

f2=Force(3,4)

f3=f1.add(f2)

f3.show()

执行结果如下:

1253021-20171023085329285-1463382646.png

二、Python的异常处理

1、Python的标准异常

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

1 try:2 <语句> #运行别的代码

3 except <名字>:4 <语句> #如果在try部份引发了'name'异常

5 except <名字>,<数据>:6 <语句> #如果引发了'name'异常,获得附加的数据

7 else:8 <语句> #如果没有异常发生

三、Python常用的第三方模块知识点

基本上,所有的第三方模块都会在PyPI - the Python Package Index上注册,只要找到对应的模块名字,即可用easy_install或者pip安装。

PIL的ImageDraw提供了一系列绘图方法,让我们可以直接绘图。 比如要生成字母验证码图片:

1 importImage, ImageDraw, ImageFont, ImageFilter2 importrandom3

4 #随机字母:

5 defrndChar():6 return chr(random.randint(65, 90))7

8 #随机颜色1:

9 defrndColor():10 return (random.randint(64, 255), random.randint(64, 255), random.randint(64, 255))11

12 #随机颜色2:

13 defrndColor2():14 return (random.randint(32, 127), random.randint(32, 127), random.randint(32, 127))15

16 #240 x 60:

17 width = 60 * 4

18 height = 60

19 image = Image.new('RGB', (width, height), (255, 255, 255))20 #创建Font对象:

21 font = ImageFont.truetype('Arial.ttf', 36)22 #创建Draw对象:

23 draw =ImageDraw.Draw(image)24 #填充每个像素:

25 for x inrange(width):26 for y inrange(height):27 draw.point((x, y), fill=rndColor())28 #输出文字:

29 for t in range(4):30 draw.text((60 * t + 10, 10), rndChar(), font=font, fill=rndColor2())31 #模糊:

32 image =image.filter(ImageFilter.BLUR)33 image.save('code.jpg', 'jpeg');

1253021-20171025105004410-1590904984.png

操作图像

1253021-20171025104620504-729351094.png

四、Pyhone阶段总结II

通过短短几周的学习,让我对pythone有了基本的认识,让我也认识了解了这门语言,语言与语言之间都有相似的地方,python学起来感觉与Java类似,但也有很大的不同,整个学习过程中,让我体会到了只要认真的学习,就有收获,虽然这门课程的教学过程将要结束,但我知道我学习的脚步还不能停止,我会一直学习关于这方面的只是,提高自己的语言能力。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值