4.4 Update
1.类的方法
1.1 构造函数__init__()
1.2 Python中的"this"
指针——self
用法:例如
self.name
,其中name
是类的一个数据成员
1.3 创造一个对象:以Student
类为例
...
#构造函数
def __init__(self, name, age) #self不能省去
...
stu = Student('JP', 19) #其中self不用传入
1.4 Python中没有private
和public
关键词,它的成员变量都是公有的
默认相信程序员,甚至可以在类外面新增成员变量
1.5 从其他文件里import
某个类的方法和之前在函数那节的方法是一样的
2.继承
#如果没有继承,请这样写
class Car():
...
#如果有继承,请这样写
class Car(Transportation): #其中Transportation是被继承的父类,这时子类Car具有父类的所有方法
def __init__(self, name, price):
super().__init__(name, price) #调用父类的构造函数,并且要注意self就不要传给它了
...
...
重写父类的方法也是一样的
文件和异常
3.如何读取一个文件?
假设在和源文件相同路径的文件夹中有一个文件myfile.txt
#把这个文件声明成一个文件对象fobj
#并且输出fobj的文件内容
#open()函数的第二个参数缺省的默认值是'r',即为读模式
#在读模式中,若使用写操作会报错
with open("myfile.txt") as fobj:
#把文件内容赋给contents
contents = fobj.read()
print(contents)
#读出来的是字符串吗?
#type()可以查看它的类型
print(type(contents))
- Python会自动帮用户close这个文件,这是Python比较好的一个地方
- 若两个源文件和待读取文件在不同的路径下,那么需要用绝对路径的方式,注意,斜线是”\“!
- 在
print()
函数里,可以通过在字符串前面加一个'r'
来打印一些特殊的字符,比如
print(r'\n')
#输出 \n
于是在文件打开中,为了保险起见,需要在文件名字符前无空隔地加一个
'r'
,比如:
with onpe(r"myfile.txt") as fobj:
...
4.如何一行行地读取数据?
lines = fobj.readlines()
5.如何写文件
5.1 写覆盖方法'w'
with open('myfile.txt', 'w') as fobj:
fobj.write("Hello World\n")
#打开来文件就可以看到 Hello World\n 了
注意:
write()
和print()
是不同的两种方式!write()
是没有默认换行的;read()
不会过滤掉换行符!
注意:read()
是完全写覆盖的
5.2 添加方法'a'
with open("myfile.txt", 'a') as fobj:
6.在文件里写的模式全部都应该是字符串,数字也要转成字符串!
fobj.write(123) #报错!
fobj.write(str(123)) #这样才是正确的
7.处理异常的方法:捕获异常
#处理除零错误
try:
print(5/0)
except ZeroDivisionError: #ZeroDivisionError即为除零错误
print("JP is dividing zero!")
#输出 JP is dividing zero!
异常的作用——有病憋着
while True:
first = input("Enter first number('q' to quit:))
if first == 'q':
break
second = input("Enter second number('q' to quit:))
if second == 'q'
break;
try:
answer = int(first) / int(second)
except ZeroDivisionError:
print("You can't divide zero!")
else:
print(answer)
文件处理异常 FileNotFoundError
假设nofile.txt
不存在
try:
with open("nofile.txt") as fobj:
contents = fobj.read()
print(contents)
except FileNotFoundError:
print("Sorry, the file is not found")
FileNotFoundError
是怎么知道的?可以测试一下这个错误,然后根据报错就可以知道这个异常是哪个类了!
在except里什么都不写,可以吗?
不可以的!如果想要它什么都不做,那就要用关键词
pass
填在这个区域
try:
...
except:
pass
else:
print("success!")
这样的话如果有问题就什么都不做
8.一个测试:你的论文有多少个单词?
with open('myarticle.txt') = fobj:
contents = fobj.read()
#将单词串变成列表,注意!分隔是以空格/回车/缩进为单位
words = contents.split()
count = len(words)
print('The article has ' + count + ' words!')