「本期内容」
![9bd867ecb645e1f444ab77ebfdb6d5a3.png](https://i-blog.csdnimg.cn/blog_migrate/2b05fc9ef97861a3d6417fdce6e9a5ed.png)
![d0db681d792240527659326a0c75d0f3.png](https://i-blog.csdnimg.cn/blog_migrate/7be3002e3cbb7ce4a9deabf4f0272908.jpeg)
类的定义与实例化
C语言是面向过程编程的,而Java,Python 则 是面向对象编程的。 面向对象编程 是最有效的编程方式之一。 Python用 类 来创建对象 ,这被称为 实例化 。下面通过一个具体的类来进行讲解。
class Cat(): """创建一个猫类""" def __init__(self,name,age): """初始化猫类的属性""" self.name = name self.age = age def sleep(self): """猫睡觉""" print("小猫要睡觉啦!") def eat_fish(self): """猫进食""" print("小猫要吃鱼啦!")#猫类实例化 cat = Cat("Tily",4)#调用猫吃鱼方法cat.eat_fish()#调用猫睡觉方法cat.sleep()输出结果:小猫要吃鱼啦!小猫要睡觉啦!
Python通过关键字class 来定义一个类。首字母大写的名称表示类名。类中的函数被称为方法。
在构造某个类时,方法__init__()是必须有的,且形参self必不可少,其他的参数根据需要进行编写。这些参数被称为类的属性。
另外,Cat类中还定义了两个方法:eat_fish()、sleep()。
最后,我们可以通过Cat()类进行猫的实例化,创建一只真正的猫。通过句点表示法,实例可以访问猫类的方法和属性。
通常,类之间有许多共同的特点,比如各种不同品种的鸟类。当我们需要创建一个新的鸟类时,我们可以采用继承的方法,获得所有鸟类共同的属性和方法。
原有的类称为父类,而新的类称为子类。子类在继承父类的基础上,可以扩展自己新的属性和方法,下面通过一个实例进行介绍。
# 父类class Cat(): """创建一个猫类""" def __init__(self,name,age): """初始化猫类的属性""" self.name = name self.age = age def sleep(self): """猫睡觉""" print("小猫要睡觉啦!") def eat_fish(self): """猫进食""" print("小猫要吃鱼啦!") # 子类class ElectricCat(Cat): """机器猫""" def __init__(self,name,age): """初始化父类的属性""" super().__init__(name,age) #新的属性 self.produce_date = "2020.6.12" def charging(self): """机器猫充电""" print("机器猫该充电啦!") def get_produce_date(self): """得到机器猫的生产日期""" print("生产日期: "+ self.produce_date)# 实例化 my_electric_cat = ElectricCat("KaFei",10)my_electric_cat.charging()my_electric_cat.get_produce_date()输出结果:机器猫该充电啦!生产日期: 2020.6.12
创建子类时,父类必须包含在当前文件中,且位于子类的前面。子类的括号内必须指定父类的名称。然后,在__init__()中,通过super()来初始化父类的属性。最后,子类可以扩展自己新的属性和方法。
类的导入
Python允许将类存储在模块中,然后在主程序中导入所需的模块。从cat.py文件中导入Cat类。
from cat import Cat
注意,一个模块中可能有多个类,从模块中导入多个类时。
from cat import Cat,ElectricCat
导入整个模块。
import cat
从模块中导入所有类。
from cat import *
类编码风格
类名采用驼峰命名法,即将类名中每个单词的首字母大写,而不使用下划线。实例名和模块名都采用小写格式,并在单词之间使用下划线。
对于每一个类,都应该有文档字符串,以描述类的功能;利用空行组织代码,一行空行分隔方法,两行空行分隔类。
导入模块时,先导入标准库的模块,然后空行,再导入你自己的模块。
![d0db681d792240527659326a0c75d0f3.png](https://i-blog.csdnimg.cn/blog_migrate/7be3002e3cbb7ce4a9deabf4f0272908.jpeg)
读文件
人们通常用Python 来处理数据,而数据通常保存在文件中。因此,学习Python 操作文件十分有必要。下面以一个例子学习Python 读取文件。with open('text.txt') as file_object: texts = file_object.read() print(texts)
首先,在程序的当前目录下新建一个文本文档,写入圆周率3.1415926,然后文件名保存为text。
Python使用open()函数来打开需要访问的文件,并返回一个文件对象。关键字with表示当程序不再访问文件时,将其关闭。
Python使用read()函数来读取文件的全部内容,然后通过print()函数打印。
文件路径
Python在使用open()函数打开文件时,需要知道文件的路径。通常Pyhton将在当前执行的文件所在的目录中查找文件。
「相对路径」
如果,Python 需要打开的文件位于当前执行程序的目录的 子文件 中,而Python 不会在该目录的子文件中进行查找。这时便可以采用 相对路径 的方法进行查找。with open('子文件名\\text.txt') as file_object: texts = file_object.read() print(texts)
「绝对路径」
有时候,可以将文件的 绝对路径 告诉给Python 。通常绝对路径较长,可以通过一个变量来进行传递。file_path = r'C:\Users\asus\Desktop\Python学习\程序\text.txt'with open(file_path) as file_object: # 逐行读取文件内容,并保存在列表中 texts = file_object.read() print(texts)
这里有一个新手都会遇到的问题,就是在路径这里。如果路径前面没有r时,运行程序就会报错。
![1aa5ec20777b5b589e18b542ba82f0fe.png](https://i-blog.csdnimg.cn/blog_migrate/c967e518324a86904e8f2c3a6bf43acf.png)
这里主要是Python中“\”表转移字符,与Window的路径符冲突。几种解决方法如下:
- 在路径前面加r,表示字符串保持字符原始值,而没有转义;
- 用双反斜杠(\\)代替单反斜杠(\);
- 同Linux系统一样,使用斜杠代替反斜杠;
2020614
Python
代码如下:
file_path = r'C:/Users/asus/Desktop/Python学习/程序/text.txt'with open(file_path) as file_object: # 逐行读取文件内容 texts = file_object.readlines()# for 循环遍历列表,逐行打印 for text in texts: print(text.rstrip())运行结果:2020614
这里需要说明,
readlines()表示逐行读取文件的内容
,并保存到列表中。由于每行内容末尾都有一个
换行符
,所以在使用print()
函数时,调用了
rstrip()函数
,消除了末尾的换行符。
写文件
我们经常会将大量数据保存在文件中,那么如何对文件进行写入呢?Python通过write()函数来进行写文件。
在当前目录新建一个空白文件,然后通过程序来写入我们想写的内容,并从该文件中读取我们写入的内容,检查是否写入成功。
file_path = r'C:/Users/asus/Desktop/Python学习/程序/love_python.txt'# 以写模式打开文件with open(file_path,'w') as file_object: # 写入内容 file_object.write('I Love Python!') # 默认只读模式打开文件 file_path = r'C:/Users/asus/Desktop/Python学习/程序/love_python.txt'with open(file_path) as file_object: # 读取文件内容 print(file_object.read()) 运行结果:I Love Python!
上面的open()
函数多了一个参数
“w”
,其表示
写入模式
。如果没有指明模式,Python
默认以
只读模式
打开文件。
如果我们需要给已有的文件添加新内容,而不是覆盖原有的内容,可以使用
附加模式‘a’
。在该模式下,你写入的文件内容会添加到文件内容的末尾。
file_path = r'C:/Users/asus/Desktop/Python学习/程序/love_python.txt'# 以附加模式打开文件with open(file_path,'a') as file_object: # 写入内容 file_object.write('I Love Java too !\n') file_path = r'C:/Users/asus/Desktop/Python学习/程序/love_python.txt'with open(file_path) as file_object: # 逐行读取文件内容,并保存在列表中 texts = file_object.readlines()# 遍历内容 for text in texts: print(text.rstrip()) 运行结果:I Love Python !I Love Java too !
异常
什么是异常?说通俗点就是程序执行期间发生的错误或被其他优先级更高的线程所打断。
那么,这个错误或者线程怎么识别呢?
Python通过异常对象来管理程序发生的异常。一旦程序发生异常,Python就会自动创建一个异常对象。
如果你在程序中预先编写了处理异常的代码,则程序继续进行,否则Python 将会停止运行程序,并返回一个 traceback ,其中 包含有关异常的报告 。Python 通过 try-except代码块 来处理异常。在该代码块中,你可以预先编写相应代码,告诉Python 发生异常该如何进行处理。 常见的异常有很多,如ZeroDivisonError 异常、FileNotFoundError 异常等等。下面通过一个FileNotFoundError 异常来进行学习。假设我们试图打开一个文件,如果该文件不存在,则让Python输出“抱歉,未找到该文件,请检查该文件是否存在!”
# 任意写一个不存在的文件名file_path = r'C:/Users/asus/Desktop/Python学习/程序/Java.txt' # try-except 代码块 try: with open(file_path) as file_object: texts = file_object.read()# 文件未找到异常except FileNotFoundError: message = "抱歉,未找到该文件,请检查该文件是否存在!" print(message) 运行结果:抱歉,未找到该文件,请检查该文件是否存在!
上面这个程序试图在当前文件路径下打开一个名为Java.txt的文件,由于该文件不存在,故而引发了文件未找到异常,try-except代码块对该异常进行了处理,并输出了友好的提示信息。
到此,Python的基本语法就大致结束了。我们可以利用这些知识来编写简单的项目。其实,Python真正强大的地方在于其拥有众多的第三方标准库。通常,我们都是结合标准库来进行学习的。
另外,任何一门编程语言都有很多编程细节,这需要在项目实战中进行学习。以上的四篇学习文档,只是对Python的基本语法进行大致的学习,还没有系统真正学习Python,只是让我们具备基本读程序的能力。
最后,小N向大家推荐一本学习Python的书。书名是《Python编程从入门到实践》,作者是美国的Eric Matthes,人民邮电出版社。这本书的讲解的非常详细,语言通俗易懂,并且有项目实战,很适合入门级的人学习Python。
![117b1e4fba3435d41e1d5e34b72d9d16.png](https://i-blog.csdnimg.cn/blog_migrate/30f8813da23248bd9c8f2e9919ceb74a.png)
![1b642df14f17171875cb8bd9038cf4dd.png](https://i-blog.csdnimg.cn/blog_migrate/78ac79b1e7f0fcd7737289a8ec8c3db1.jpeg)
往期精彩回顾
![f41d913bbb6ca9bf00bcc65addd4c4e9.png](https://i-blog.csdnimg.cn/blog_migrate/a0745b50b04dcd969382f3d2951f3a70.jpeg)
Python笔记(一)
Python笔记(二)
Python笔记(三)
别的小朋友都有人点赞了,我的呢?![22618489a4ecb912848c7e063970285d.png](https://i-blog.csdnimg.cn/blog_migrate/33354998f011e0df44d066b8ec6f1e3a.jpeg)