Python阶段总结II

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python阶段总结II相关的知识,希望对你有一定的参考价值。

一、Python的面向对象

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

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

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

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

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

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

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

  • 方法:类中定义的函数。

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

实例

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

技术分享

创建类的实例对象

实例化类其他编程语言中一般用关键字 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)

完整属性:

class Car:
    def __init__(self,name):
        self.name=name
        self.remain_mile=0
    def fill_fuel(self,miles):
        self.remain_mile=miles
    def run(self,miles):
        print (self.name,end=:)
        if self.remain_mile>=miles:
            self.remain_mile-=miles
            print("run %d miles!"%(miles,))
        else:
            print("fuel out!")
class GasCar(Car):
    def fill_fuel(self,gas):
        self.remain_mile=gas*6.0
class ElecCar(Car):
    def fill_fuel(self,power):
        self.remain_mile=power*3.0

gcar=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 print object 这时会调用object对象的__str__方法
__cmp__ :比较器方法,对 int、str 等内置数据类型排序时,Python的 sorted() 按照默认的比较函数 cmp 排序,但是,如果对一组 Student 类的实例排序时,就必须提供我们自己的特殊方法__cmp__()

Python的运算符重载:

class Force:
    def __init__(self,x,y):
         self.fx, self.fy=x,y
            
    def show(self):
        print("Force<%s,%s>"% (self.fx, self.fy))
        
    def add(self,force2):
        x=self.fx +force2.fx
        y=self.fy +force2.fy
        return Force(x, y)
    def __str__(self):
        return "Force<%r,%r>" % (self.x, self.y)
    
    def __mul__(self, n):
        x, y=self.x+ n, self.y+ n
        return Force(x, y)

    def __add__(self, other):
        x,y=self.x+other.x, self.y+other.y
        return Force(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()

执行结果如下:

技术分享

 

 

二、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 import Image, ImageDraw, ImageFont, ImageFilter
 2 import random
 3 
 4 # 随机字母:
 5 def rndChar():
 6     return chr(random.randint(65, 90))
 7 
 8 # 随机颜色1:
 9 def rndColor():
10     return (random.randint(64, 255), random.randint(64, 255), random.randint(64, 255))
11 
12 # 随机颜色2:
13 def rndColor2():
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 in range(width):
26     for y in range(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);

技术分享

 

操作图像

技术分享

 

四、Pyhone阶段总结II 

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

 

 





以上是关于Python阶段总结II的主要内容,如果未能解决你的问题,请参考以下文章

Python学习总结

python学习阶段总结

个人作业4——alpha阶段个人总结

Python阶段总结

软工网络15个人作业4--alpha阶段个人总结

LeetCode810. 黑板异或游戏/455. 分发饼干/剑指Offer 53 - I. 在排序数组中查找数字 I/53 - II. 0~n-1中缺失的数字/54. 二叉搜索树的第k大节点(代码片段