18.继承和csv文件操作
1. 继承
"""
继承就是让子类直接拥有父类属性和方法
父类:被继承者(又叫超类)
子类:继承者
"""
"""
class 类名(父类1,父类2,父类3,...):
类的说明文档
类的内容
注意:如果定义类的时候没有写继承,那么这类默认继承Python的基类:object
class 类名: == class 类名(object):
"""
class A:
x = 10
def __init__(self):
self.y = 20
def func1(self):
print('对象方法')
@classmethod
def func2(cls):
print('类方法')
@staticmethod
def func3():
print('静态方法')
class B(A):
pass
print(B.x)
b = B()
print(b.y)
b.func1()
B.func2()
B.func3()
"""
1)添加类属性和方法
直接在子类中定义新的类属性和新的方法
2)添加对象属性
添加对象属性的时候如果还想要继承父类的对象属性,必须在子类的__init__方法中通过super()去调用父类的__init__方法
"""
class C(A):
m = 1000
def __init__(self):
super().__init__()
self.z = 199
def func11(self):
print('C的对象方法')
@classmethod
def func22(cls):
print('C的类方法')
@staticmethod
def func33():
print('C的静态方法')
print(C.x)
print(C.m)
c = C()
c.func1()
c.func11()
C.func2()
C.func22()
C.func3()
C.func33()
print(c.y)
print(c.z)
2.csv文件读、写操作
import csv
f = open('电影.csv', encoding='utf-8', newline='')
reader = csv.reader(f)
print(next(reader))
print(list(reader))
f.close()
print('------------------------------------华丽的分割线-----------------------------------')
with open('电影.csv', encoding='utf-8', newline='') as f:
reader = csv.DictReader(f, fieldnames=['name', 'director', 'star', '上映时间', '国家', '类型','评分','评论人数','封面地址'])
next(reader)
print(next(reader))
import csv
with open('files/学生成绩.csv', 'w', encoding='utf-8', newline='') as f:
writer = csv.writer(f)
writer.writerow(['姓名', '数学', '语文', '英语'])
writer.writerow(['小明', 98, 92, 87])
writer.writerows([
['张三', 87, 56, 66],
['小花', 99, 60, 87],
['Tom', 67, 82, 80]
])
with open('files/学生信息.csv', 'w', encoding='utf-8', newline='') as f:
writer = csv.DictWriter(f, ['name', 'age', 'tel', 'gender'])
writer.writeheader()
writer.writerow({'name': '小明', 'age': 18, 'tel': '110', 'gender': '男'})
writer.writerows([
{'name': '小花', 'age': 20, 'tel': '232111', 'gender': '女'},
{'name': '小红', 'age': 23, 'tel': '2342', 'gender': '女'},
{'name': '李华', 'age': 30, 'tel': '3523214', 'gender': '男'}
])
3.excel读操作
import openpyxl
workbook = openpyxl.open('files/2020年销售数据.xlsx')
names = workbook.sheetnames
print(names)
sheet1 = workbook.active
print(sheet1)
t_task = workbook['task']
print(t_task)
t_data = workbook['data']
print(t_data)
print(t_task.max_row, t_task.max_column)
print(t_data.max_row, t_data.max_column)
cell1 = t_data.cell(1, 1)
print(cell1)
cell2 = t_data.cell(7, 5)
print(cell2)
print(cell1.value)
print(cell2.value)
for x in range(1, t_data.max_column+1):
print(t_data.cell(2, x).value, end=',')
print()
for x in range(2, t_data.max_row + 1):
print(t_data.cell(x, 3).value)
for row in range(1, t_data.max_row + 1):
for col in range(1, t_data.max_column + 1):
print(t_data.cell(row, col).value, end=',')
print()