当前位置: 首页 > 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("处理器不存在")

相关文章:

  • 【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 知识点整理
  • xml网站地图格式/搜狐财经峰会
  • 佛山专业的网站建设公司/百度网络营销中心app
  • 青岛企业网站模板建站/太原关键词优化软件
  • 天津如何做百度的网站推广/谷歌google搜索引擎入口
  • 花生壳怎么发布自己做的网站/建站工具有哪些
  • 网站里的动画效果图/2023年小学生简短小新闻