• python大数据 pycharm中的面向对象-文件读写-异常


    一、继承

    1. # 类的定义
    2. # 旧式类定义 一般在定义单个类时使用
    3. class 类名:
    4. name = None
    5. def func(self):
    6. pass
    7. # 新式类定义 一般在继承时使用
    8. class 类名(指定需要继承的类):
    9. name = None
    10. def func(self):
    11. pass
    12. # 新式类定义
    13. class A():
    14. name = '张三'
    15. def func(self):
    16. # pass 不做处理
    17. pass
    18. # 旧式类
    19. class B:
    20. age = 20
    21. def fucn(self):
    22. pass
    23. print(A.name)
    24. print(B.age)

    1-1 单继承

    1. # 单继承 只继承一个类
    2. class Father:
    3. gender = '男'
    4. def run(self):
    5. print('跑步很快')
    6. # 子类继承父类获取父类中属性和方法
    7. class Son(Father):
    8. # 定义子类的属性和方法
    9. age = 20
    10. def play(self):
    11. print('玩游戏')
    12. # 创建子类对象
    13. s = Son()
    14. # 使用子类对象操作父类的属性和方法以及自己的属性和方法
    15. print(s.gender)
    16. print(s.age)
    17. s.run()
    18. s.play()
    1. # 单继承的使用
    2. class Master:
    3. name = '师父'
    4. def flapjack(self):
    5. print('摊鸡蛋煎饼')
    6. class Apprentice(Master):
    7. # 子类继承后可以不定义属性和方法,直接使用父类的方法
    8. pass
    9. a = Apprentice()
    10. # 子类使用父类方法
    11. a.flapjack()

    1-2 多继承

    1. # 单继承的使用
    2. class Master:
    3. name = '师父'
    4. def flapjack(self):
    5. print('摊鸡蛋煎饼')
    6. class School:
    7. name = '学校'
    8. def flapjack(self):
    9. print('摊肉肠煎饼')
    10. class Apprentice(Master,School):
    11. # 子类继承后可以不定义属性和方法,直接使用父类的方法
    12. pass
    13. a = Apprentice()
    14. # 子类使用父类方法
    15. a.flapjack()
    16. # 查看子类的继承父类顺序
    17. print(Apprentice.__mro__)

    1-3 方法重写

    1. # 重写父类方法 子类继承父类后定义了一个和父类相同名字的方法
    2. # 单继承的使用
    3. class Master:
    4. name = '师父'
    5. def flapjack(self):
    6. print('摊鸡蛋煎饼')
    7. class Apprentice(Master):
    8. # 子类中定义了自己方法,和父类方法名一样
    9. # 子类相当于重写了父类的方法,在执行时按照子类的逻辑执行
    10. def flapjack(self):
    11. print('摊手抓饼')
    12. a = Apprentice()
    13. a.flapjack()

    1-4 多层继承

    1. # 多层继承
    2. # 重写父类方法 子类继承父类后定义了一个和父类相同名字的方法
    3. # 单继承的使用
    4. class Master:
    5. name = '师父'
    6. def flapjack(self):
    7. print('摊鸡蛋煎饼')
    8. class Apprentice(Master):
    9. name = '徒弟'
    10. def flapjack(self):
    11. print('摊手抓饼')
    12. super().flapjack()
    13. class LittleApprentice(Apprentice):
    14. name = '小弟'
    15. def flapjack(self):
    16. print('蒸包子')
    17. super().flapjack()
    18. # 创建对象
    19. la = LittleApprentice()
    20. la.flapjack()
    21. print(LittleApprentice.__mro__)
    1. # 多层继承
    2. # 重写父类方法 子类继承父类后定义了一个和父类相同名字的方法
    3. # 单继承的使用
    4. class Master:
    5. name = '师父'
    6. def flapjack(self):
    7. print('摊鸡蛋煎饼')
    8. class School:
    9. name = '学校'
    10. def school_flapjack(self):
    11. print('摊肉肠煎饼')
    12. class Apprentice(Master,School):
    13. name = '徒弟'
    14. def flapjack(self):
    15. print('摊手抓饼')
    16. super().flapjack()
    17. class LittleApprentice(Apprentice):
    18. name = '小弟'
    19. def flapjack(self):
    20. print('蒸包子')
    21. super().flapjack()
    22. # 创建对象
    23. la = LittleApprentice()
    24. la.flapjack()
    25. la.school_flapjack()
    26. print(LittleApprentice.__mro__)

    二,多态

    1. # 多态
    2. class Teacher:
    3. def __init__(self,name):
    4. self.name = name
    5. def run(self):
    6. print(f'{self.name}老师开车')
    7. def stop(self):
    8. print(f'{self.name}老师停车')
    9. class Car:
    10. def __init__(self,type):
    11. self.type = type
    12. def start(self):
    13. print(f'{self.type}启动')
    14. def close(self):
    15. print(f'{self.type}熄火')
    16. t = Teacher('张三')
    17. c = Car('小汽车')
    18. c.start()
    19. t.run()
    20. c.close()
    21. t.stop()
    1. # 多态
    2. class Teacher:
    3. def __init__(self,name):
    4. self.name = name
    5. def run(self):
    6. print(f'{self.name}老师开车')
    7. def stop(self):
    8. print(f'{self.name}老师停车')
    9. class Car(Teacher):
    10. def __init__(self,type,name):
    11. super().__init__(name)
    12. self.type = type
    13. def start(self):
    14. print(f'{self.type}启动')
    15. super().run()
    16. def close(self):
    17. print(f'{self.type}熄火')
    18. super().stop()
    19. c = Car('小汽车','张三')
    20. c.start()
    21. c.close()

    1. # 多态
    2. class Teacher:
    3. def __init__(self,name):
    4. self.name = name
    5. def run(self):
    6. pass
    7. def stop(self):
    8. pass
    9. class Car(Teacher):
    10. def __init__(self,type,name):
    11. super().__init__(name)
    12. self.type = type
    13. def run(self):
    14. # 在多态实现时,子类继承父类并对父类方法进行重写
    15. print(f'{self.type}启动')
    16. print(f'{self.name}老师开车')
    17. def stop(self):
    18. print(f'{self.type}熄火')
    19. print(f'{self.name}老师停车')
    20. class Metro(Teacher):
    21. def __init__(self,type,name):
    22. super().__init__(name)
    23. self.type = type
    24. def run(self):
    25. # 在多态实现时,子类继承父类并对父类方法进行重写
    26. print(f'{self.type}启动')
    27. print(f'{self.name}老师乘坐地铁')
    28. def stop(self):
    29. print(f'{self.type}到站')
    30. print(f'{self.name}老师下车')
    31. # 单独封装一个行为函数
    32. # 该函数就是对外提供一个函数接口,其他开发人员使用,就调用函数
    33. def action(obj):
    34. # obj接收一个对象
    35. obj.run()
    36. obj.stop()
    37. c = Car('越野车','张三')
    38. action(c)
    39. m = Metro('地铁1号线','李四')
    40. action(m)

    三、文件读写

    3-1 文件数据读取

    1. # 文件数据读取
    2. # 1-打开文件 创建文件描述符
    3. # open的第一个参数指定读取的文件路径 可以使用绝对路径 也可以使用相对路径 windos的路径需要改斜杠
    4. # 第二参数指定读写方式 r读 w写
    5. # 第三个参数指定文件编码格式,方便读取中文数据 常用的两种utf-8 gbk
    6. f = open('D:/Python大数据就业/4-Python基础/day06-面向对象-文件处理-异常-模块/4-资料/students.txt','r',encoding='utf-8')
    7. # 读取数据文件
    8. # 第一种 读取一行数据
    9. # line_data1 = f.readline()
    10. # print(line_data1)
    11. # line_data2 = f.readline()
    12. # print(line_data2)
    13. # 第二种读取多行数据 将读取的多行数据放入列表中 该方式最常用
    14. lines_data = f.readlines()
    15. print(lines_data)
    16. # 第三种 一次将所有数据读取出来当成一个完整的字符串数据 前面已经读取过数据 read就无法再读到数据 所以在实际开发中三种方式选择一种
    17. # data = f.read()
    18. # print(data)
    19. # print(type(data))
    20. # 数据取完成后可以使用close方法关闭文件
    21. f.close()

    3-2 数据写入文件

    • 写入方式

    四、异常处理

    1. # 索引下标取值错误
    2. data = 'itcast'
    3. data[100]
    4. # 字典取值错误
    5. data = {'name':'张三'}
    6. data['age']
    7. # 类型错误
    8. data = '100'
    9. data2 = 10
    10. data3 = data/data2
    11. # 文件读取错误 路径不存在
    12. with open('aaa.txt','r',encoding='utf-8') as f:
    13. f.read()

    指定异常类型捕获

    1. # 可以捕获所有异常
    2. try:
    3. data_str = 'itcast'
    4. # data_str[100]
    5. f = open('aasd.txt','r',encoding='utf-8')
    6. except:
    7. # 捕获到异常处理的业务逻辑
    8. print('异常被捕获')
    9. # 异常被捕获后,可以正常执行后续的逻辑
    10. print('其他代码逻辑')
    11. # 捕获固定的异常 处理固定错误
    12. try:
    13. # data = 15/0
    14. # f = open('aasd.txt', 'r', encoding='utf-8')
    15. data_str='itcast'
    16. data_str[100]
    17. # 捕获指定异常
    18. except (FileNotFoundError,ZeroDivisionError,IndexError):
    19. print('捕获0为除数的异常')
    20. print('其他代码逻辑')

    异常的其他处理

    1. try:
    2. data = 15/0
    3. # Exception as e 获取异常的错误信息
    4. # 可以捕获到异常后输出错误信息
    5. except Exception as e:
    6. print('异常被捕获')
    7. print(e)
    8. else:
    9. print('else 没有异常逻辑')
    10. finally:
    11. print('finally :无论是否有异常都执行')

    函数中的异常处理

    1. def func(a,b):
    2. data = a + b
    3. print(data)
    4. try:
    5. # 调用其他开发人员编写的代码处理错误
    6. func('10',20)
    7. except Exception as e:
    8. print(e)

  • 相关阅读:
    【每日一题】—— 最大素因子
    Android 虚拟机
    Android查漏补缺(5)ContentProvider和ContentResolver
    经典bloom算法(**布隆过滤器**)-levelDB拆分
    HIVE多维分析函数:grouping sets、cube、rollup
    %load_ext autoreload 介绍
    电商收付通,多服务商模式
    基于opencv实现简单人脸检测
    2024 年 AI 辅助研发趋势
    有什么好赚钱的项目可以做?这8个小项目不错,想赚钱的别错过!
  • 原文地址:https://blog.csdn.net/m0_62008384/article/details/139327143