第三周——python学习 Day2 7.12

学习时间:9:00——12:00         17:00——19:00

1.类

1.1创建和使用类

class Dog:
    def __init__(self, name, age):      #init前后有两个下划线!!!!!
        self.name=name
        self.age=age
    def sit(self):
        print(f"{self.name} is now sitting.")
    def roll_over(self):
        print(f"{self.name} rolled over!")

my_dog=Dog("doudou",8)
print(f"My dog'name is {my_dog.name}.")
print(f"My dog is {my_dog.age} years old.")
my_dog.sit()
my_dog.roll_over()


your_dog=Dog("Lucy",6)
print(f"\nYour dog'name is {your_dog.name}.")
print(f"Your dog is {your_dog.age} years old.")
your_dog.sit()
your_dog.roll_over()

(1)class+类名  来定义一个类               

(2)类的名称通常大写,实例的名称通常小写

(3)通过实例访问的变量称为属性,例如name和age,属性可以指定默认值

(4)类中的函数称为方法,有关函数的一切都适用于方法例如sit()和roll_over()

(5)方法__init__()是一个特殊的方法,init前后有各两个下划线,用来区分普通方法

(6)定义包括三个形参:self、name、age,self必不可少且必须位于其他形参前面,它的作用是让实例能够访问类中的属性和方法,其本身是一个指向实例本身的引用,我们通过实参向Dog()传递名字和年龄,self会自动传递

(7)访问实例的属性,可以用句点表示法

(8)想要修改属性的值可以直接通过实例修改,也可以通过增加方法进行修改

1.2继承

编写类时,并非总要从空白开始,如果要编写一个类是另一个现成类的特殊版本,可以使用继承,一个类继承另一个类时,将自动获得另一个类的属性和方法,原有的类为父类,新的类为子类,子类可以继承,也可以定义自己的属性和方法

class Dog:
    def __init__(self, name, age):
        self.name=name
        self.age=age
    def sit(self):
        print(f"{self.name} is now sitting.")
    def roll_over(self):
        print(f"{self.name} rolled over!")

class Toypoodle_Dog(Dog):
    def __init__(self, name ,age):
        super().__init__(name ,age)

my_dog=Toypoodle_Dog("huangdou",4)
print(f"My toypoodle dog'name is {my_dog.name}.")
my_dog.sit()

(1)创建子类时,芙蕾必须包含在当前文件中且位于子类前面,定义了子类名后圆括号内必须指定父类的名称,之后用__init__()接受Dog实例的所有信息,之后方法super()能够调用父类的方法,父类也称超类

(2)添加新属性的位置在super()下方

(3)对于父类中的方法,如果有不符合子类的,都可以进行重写,为此,只需要在子类中定义一个与要重写的父类方法名同名的方法即可

(4)可以在子类前面定义一个新类,然后在子类中将新类当做属性,调用时用句点表示法,先在子类中查找新的属性,然后在新类中查找对应的属性

1.3导入类

为了让文件简洁且易于阅读,可以将类存储在模块中,然后在主程序中导入所需要的模块

(1)导入单个类: from 模块名 import 类名

(2)从一个模块中导入多个类:from 模块名 import 类名1,类名2,...

(3)导入整个模块:import 模块名

调用时用句点表示法:模块名.类名

(4)导入模块中的所有类:from 模块名 import *

(5)使用别名:from 模块名 import 类名 as 别名

(6)标准库:是一组模块,包含其他编程员编写好的函数和类,只需在开头包含一条简单的import语句即可

2.文件和异常

2.1从文件中读取数据

with open(文件名) as 别名:

print(别名.read())

函数open()用来打开文件,括号内接受的参数是要打开的文件名

关键字with可以在不需要访问文件后将其关闭(注意没有用close()来关闭文件,这是因为当文件出现bug时close()未执行,文件将不会关闭,可能造成文件数据丢失或受损,或当过早的调用close()时,会发现需要使用时,文件已经关闭,因此with就避免了这些情况)

with open('test1.txt') as file_object:
    content=file_object.read()
print(content)

方法read()可以读取文件中的全部内容,但是相比与原始文件,会发现多了一个空行,这是因为read()到达文件末尾时会返回一个空字符串,而这个空字符串显示出来就是一个空行,要删除空行,可以使用方法rstrip()

要打开不在程序文件所属目录中的文件,可以

with open '文件名/文件夹名.txt'”)  as 别名:

逐行读取用for循环,要创建一个包含文件各行内容的列表用 文件名.readlines()

2.2写入文件

写入空文件:with open (文件名,'w'):

                           文件名.write()

附加到文件:给文件添加内容,而不是覆盖原来的内容,可以以附加模式打开文件

with open (文件名,'a'):

    文件名.write()

2.3异常

异常用来管理程序执行期间发生的错误,如果没有异常处理,那么遇到错误程序会报错而无法运行;如果进行了处理,那么程序继续运行

使用try-expect代码块可以处理异常

try:
    print(5/0)
except ZeroDivisionError:
    print("You can't divide by zero!")

如果try中的代码没有错误,那么会自动跳过expect代码块,如果遇到错误,python会运行与之匹配的expect代码块

如果不知道可能发生的错误,可以直接在expect后面的错误类型中输入Expectation,这就包含了所有可能发生的错误类型

2.4分析文本

方法split()以空格为分隔符将字符串分拆成多个部分,并将这些部分存储在一个列表中

2.5静默失败

有时候希望程序在发生异常时保持沉默,就需要pass语句,只需要在expect代码块下面输入pass即可,pass也可以充当占位符,提醒你程序的某个地方什么都没有做,当我们发现缺少时,可以回过头来进行处理

2.6存储数据

json模块可以将简单的数据结构转储到文件中,并在程序再次运行时加载该文件中的数据,更重要的是json数据格式并非python专用,也可以将这些数据和其他语言的人共享

存储一组数:json.dump()

接受两个实参:要存储的数据、可用于存储数据的文件对象

import json
numbers=[1,2,3,4,5]
file_name='numbers.json'
with open(file_name,'w') as f:
    json.dump(numbers,f)

先导入模块json,然后创建一个数字列表,接着指定列表要存储在哪个文件中,扩展名通常用.json

将列表读取到内存中:json.load()

import json
file_name='numbers.json'
with open(file_name) as f:
    numbers = json.load(f)
print(numbers)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值