【Hello Python World】Class Notes of Week 5

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中没有privatepublic关键词,它的成员变量都是公有

默认相信程序员,甚至可以在类外面新增成员变量

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!')

下一节:关于json——一种存储数据的模块

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值