函数
继承
# 继承
class Animals():
def eat(self):
print('吃东西咯~')
# 继承Animals类
class Dog(Animals):
def bark(self):
print('小狗汪汪汪。。。')
# 继承Dog类
class XTQ(Dog):
def sleep(self):
print('睡觉ing')
# 创建Animals对象
ani = Animals()
# 调用函数
ani.eat()
# 创建Dog对象
dog = Dog()
# 调用父类函数
dog.eat()
dog.bark()
print('-' * 50)
xtq = XTQ()
# 调用父类的父类的函数
xtq.eat()
xtq.bark()
重写
- 重写:在子类中定义了与父类中名字相同的方法
- 重写的原因:父类的方法不满足子类的需求,所以重写
- 重写之后的特点:不再调用父类的方法
- 重写的方式
- 覆盖:父类中的功能完全抛弃,不再用
- 扩展:父类中的功能还能调用,只是添加了新功能【使用较多】
class Dog():
def bark(self):
print('汪汪汪')
class XTQ(Dog):
# 重写 父类中bark方法
def bark(self):
print('嗷嗷嗷')
xtq = XTQ()
xtq.bark() # 嗷嗷嗷
扩展:
class Dog():
def bark(self):
print('汪汪汪')
class XTQ(Dog):
def bark(self):
# 使用super()方法调用父类中的重写方法
super().bark()
print('嗷嗷嗷')
xtq = XTQ()
xtq.bark()
结果:
汪汪汪
嗷嗷嗷
属性
# 每创建一个对象,count加一
class Dog:
count = 0
def __init__(self, name):
self.name = name
Dog.count += 1
print(Dog.count) # 0
dog1 = Dog('小白')
print(Dog.count) # 1
方法
方法:使用 def 关键字定义在类中的函数
-
实例方法:在类中直接定义的方法
class Demo: def func(self): pass
-
类方法
# 在方法名字的上方书写 @classmethod 装饰器 class Demo: @classmethod def func(cls): pass
文件操作
- 打开文件
- 读 or 写文件
- 关闭文件
open(file, mode='r', encoding=None)
- file:要打开的文件,str类型。可相对路径 or 绝对路径
- mode:默认参数 r:只读 w:只写 a:追加,在文件末尾写入内容
- 返回值:返回的是文件对象
- 关闭文件:文件对象.close()
文件的写操作
# 打开文件,以 w 的形式打开
# 文件不存在,则创建 文件已存在,则会覆盖
f = open('file.txt', 'w', encoding='utf-8')
# 写入内容
f.write('好好学习\n天天向上')
# 关闭文件
f.close()
文件的读操作
# 打开已存在的文件
# 若文件不存在,会报错
f = open('file.txt', 'r', encoding='utf-8')
# 给个变量接收内容
contain = f.read()
# 打印读取文件的信息
print(contain)
# 关闭文件
f.close()
# 运行结果如下
好好学习
天天向上
关闭文件
# test3.py文件
# 以追加的方式打开文件file.txt
# with open : 不用书写关闭文件的代码,会自动关闭。
with open('file.txt', 'a', encoding='utf-8') as f1:
f1.write('\ngood good study')
# 每执行一次就追加一次
# file.txt文件
好好学习
天天向上
good good study
good good study
readline()
# 按行读取文件
# 默认以 r 打开
with open('file.txt', encoding='utf-8') as f:
# 每次只读取一行
buf = f.readline()
print(buf)
print(f.readline())
print(f.readline())
# 运行结果
好好学习
天天向上
good good study
遍历每一行
with open('file.txt', encoding='utf-8') as f:
for i in f:
print(i, end='')
# 运行结果
好好学习
天天向上
good good study
good good study
读取完最后一行后会返回空字符串
with open('file.txt', encoding='utf-8') as f:
while True:
buf = f.readline()
if len(buf) == 0:
break
else:
print(buf, end='')
JSON文件
基于文本,轻量级的数据交换格式
- 是一个文本文件
- 独立语音,每种编程语言都可使用
- 轻量级,相同数据,和其他格式相比,占用大小比较小
编写JSON文件
# info.json 文件
{
"name": "小明",
"age": 18,
"isMen": true,
"like": [
"听歌",
"游戏",
"购物",
"吃饭",
"睡觉"
],
"address": {
"country": "中国",
"city": "上海"
}
}
读取JSON文件
1. 导包 import json
2. 读打开文件
3. 读文件
json.load(文件对象)
import json
with open('info.json',encoding='utf-8') as f:
result = json.load(f)
print(result)
print(type(result))
print(result.get('name'))
print(result.get('like'))
# 运行结果
{'name': '小明', 'age': 18, 'isMen': True, 'like': ['听歌', '游戏', '购物', '吃饭', '睡觉'], 'address': {'country': '中国', 'city': '上海'}}
<class 'dict'>
小明
['听歌', '游戏', '购物', '吃饭', '睡觉']
多个对象
[
{
"name": "小明",
"age": 18,
"isMen": true,
"like": [
"听歌",
"游戏",
"购物",
"吃饭",
"睡觉"
],
"address": {
"country": "中国",
"city": "上海"
}
},
{
"name": "小红",
"age": 20,
"isMen": false,
"like": [
"听歌",
"游戏",
"购物",
"吃饭",
"睡觉"
],
"address": {
"country": "中国",
"city": "广州"
}
}
]
import json
with open('info.json',encoding='utf-8') as f:
info_list = json.load(f)
for info in info_list:
print(info.get('name'), info.get('age'), info.get('address').get('city'))
# 运行结果
# 小明 18 上海
# 小红 20 广州