当前位置: 首页 > news >正文

Python--面向对象高级(下)

3. 异常处理

3.1 基础语法

try:
    # 可能出错的代码
except ValueError as e:
    print("值错误:", e)
except Exception as e:
    print("未知错误:", e)
finally:
    print("资源清理")

3.2 异常细分

异常类型触发场景
​KeyError​字典键不存在
​IndexError​索引越界
​TypeError​类型操作不匹配
​FileNotFoundError​文件未找到

3.3 自定义异常

class NetworkError(Exception):
    def __init__(self, msg):
        self.msg = msg

try:
    raise NetworkError("连接超时")
except NetworkError as e:
    print(e.msg)  # 输出:连接超时

3.4 特殊场景

  • finally与return:即使函数中有return​,finally​代码仍会执行。
  • 上下文管理器:使用with​语句自动管理资源(如文件操作)。

4. 反射

4.1 核心函数

函数作用示例
​getattr(obj, attr)​获取对象属性/方法​getattr(obj, "show")()​
​setattr(obj, attr, value)​设置对象属性​setattr(obj, "name", "新值")​
​hasattr(obj, attr)​判断属性是否存在​hasattr(obj, "wx") → True/False​
​delattr(obj, attr)​删除属性​delattr(obj, "name")​

4.2 动态导入模块

from importlib import import_module

# 导入模块并获取类
module = import_module("requests.exceptions")
InvalidURL = getattr(module, "InvalidURL")

4.3 应用场景

  • 插件化开发:根据配置文件动态加载类。
  • API路由:通过URL路径映射到对应的处理函数。
def run_handler(handler_name):
    handler = getattr(module, handler_name, None)
    if handler:
        handler()
    else:
        print("处理器不存在")
http://www.dtcms.com/a/50134.html

相关文章:

  • 【Python】精通 Python 模块导入:命名空间、组织与最佳实践
  • Linux驱动开发-字符设备驱动开发
  • 51单片机编程学习笔记——动态数码管显示多个数字
  • DBeaver下载安装及数据库连接(MySQL)
  • STM32 ADC模数转换
  • [SystemVerilog]例化
  • AI赋能校园安全:科技助力预防与应对校园霸凌
  • Servlet理论和tomcat(2)http
  • Synchronized解析
  • WiFi IEEE 802.11协议精读:IEEE 802.11-2007,7,Frame formats帧格式
  • VUE_使用Vite构建vue项目
  • 高考數學。。。
  • DeepSeek 全套资料pdf合集免费下载(持续更新)
  • 强化学习-随机近似与随机梯度下降
  • 18.5 ChatGLM2-6B 开源协议深度解读:自由与约束的平衡之道
  • 力扣HOT100之哈希:49. 字母异位词分组
  • macOS 安装JDK17
  • React:Router路由
  • 信奥赛CSP-J复赛集训(DP专题)(14):P7158 「dWoi R1」Password of Shady
  • JavaScript 知识点整理
  • AI赋能低代码平台可行性研究报告
  • docker学习笔记(1)从安装docker到使用Portainer部署容器
  • AI数据分析:deepseek生成SQL
  • Docker 学习(三)——数据管理
  • 《Operating System Concepts》阅读笔记:p180-p187
  • 【C++】当一个类A中没有声明任何成员变量和成员函数,sizeof(A)是多少?
  • shell文本处理
  • 深度学习的隐身术:详解 PyTorch nn.Dropout
  • Scala:for 循环遍历形式基本简单介绍(基础,高级,for-yield,特殊场景)
  • 如何将本机的vm中linux拷贝给别人使用