Python __missing__ 魔法方法
- 首先从使用一个字典开始, 当以d[key] 方式取出一个不存在的值的时候, 会抛出
KeyError
的异常
d = {'a': 1, 'b': 2, 'c': 3}
print(d['a'])
print(d['f'])# >>>>>>>>>>
1
Traceback (most recent call last):File "D:/workspace/example-code/03-dict-set/test.py", line 17, in <module>print(d['f'])
KeyError: 'f'
- 继承
dict
类
class NewDict(dict):def __getitem__(self, item):print(f'__getitem__被调用')try:ret = super(NewDict, self).__getitem__(item)print(f'结果为: {ret}')except Exception as e:print(e)raise ereturn retnd = NewDict(a=1, b=2)
print(nd['a'])
# >>>>
__getitem__被调用
结果为: 1
1# >>>>>
print(nd['c'])
__getitem__被调用
Traceback (most recent call last):File "D:/workspace/example-code/03-dict-set/test.py", line 18, in <module>print(nd['c'])File "D:/workspace/example-code/03-dict-set/test.py", line 13, in __getitem__ret = super(NewDict, self).__getitem__(item)
KeyError: 'c'
可以看出在我们使用d[key]方式取值的时候调用的是 getitem 方法,找到不到 key, 抛出 KeyError 异常
- 实现
__missing__
方法
class NewDict(dict):def __missing__(self, key):print(f'__missing__被调用')return 1000def __getitem__(self, item):print(f'__getitem__被调用')ret = super(NewDict, self).__getitem__(item)return retnd = NewDict(a=1, b=2)
print(nd['a'])
# >>>>>>>>
__getitem__被调用
1# >>>>>>
print(nd['c'])
__getitem__被调用
__missing__被调用
1000
可以看出当我们实现了 __missing__
方法, 以d[key] 方式取值. 当有此key的时候,是不会调用 __missing__
方法, 当 key 不存在的时候, 会调用 __missing__
, 并将返回值返回.
官方文档描述
Python __missing__ 魔法方法相关推荐
- python __reduce__魔法方法_Python魔法方法指南
(译)Python魔法方法指南 简介 本指南归纳于我的几个月的博客,主题是 魔法方法 . 什么是魔法方法呢?它们在面向对象的Python的处处皆是.它们是一些可以让你对类添加"魔法" ...
- Python之魔法方法详解
转载于: https://pyzh.readthedocs.io/en/latest/python-magic-methods-guide.html 11.1. 简介 本指南归纳于我的几个月的博客,主 ...
- Python的魔法方法总结
转自:http://pyzh.readthedocs.io/en/latest/python-magic-methods-guide.html 原文: http://www.rafekettler.c ...
- Python基础--魔法方法()运算符重载)
文章目录 Python基础--魔法方法()运算符重载) init方法 str方法 Python基础–魔法方法()运算符重载) init方法 class Cat:def hello(self):prin ...
- Python基础——魔法方法(一)
文章目录 魔法方法 构造和析构 算数运算 算数操作符 反运算 增量赋值运算 一元操作符 属性访问 魔法方法 前面在介绍类和对象时,已经接触过Python常用的魔法方法,那么什么是魔法方法呢? 魔法方法 ...
- python魔法方法学不懂_深入学习Python之魔法方法
什么是Python魔法方法 魔法方法就如同它的名字一样神奇,总能在你需要的时候为你提供某种方法来让你的想法实现.魔法方法是指Python内部已经包含的,被双下划线所包围的方法,这些方法在进行特定的操作 ...
- 用Python的魔法方法实现扑克牌
用Python的魔法方法实现扑克牌 """ @author:amgoole @date: 2021/6/26 @email: xwen.xi@icloud.com &qu ...
- Python的魔法方法 .
基本行为和属性 __init__(self[,....])构造函数 . 在实例化对象的时候会自动运行 __del__(self)析构函数 . 在对象被回收机制回收的时候会被调用 __str__(sel ...
- python __reduce__魔法方法_非常全的通俗易懂 Python 魔法方法指南(下)
点击上方"咸鱼学Python",选择"加为星标" 第一时间关注Python技术干货! 作者:Rafe Kettler 翻译:hit9 来源:https://py ...
最新文章
- 网络营销——网络营销浅析网站不发文还能维持稳定排名吗?
- Spring Cloud【Finchley】-02服务发现与服务注册Eureka + Eureka Server的搭建
- 27.4. /etc/bandwidthd.conf
- wandb(wb)(weights and biases): 深度学习轻量级可视化工具入门教程
- 论“性能需求分析”系列专题(一)之 性能需求剖析
- HDOJ杭电2044
- 动手学PaddlePaddle(5):迁移学习
- 英特尔助力金山云带你畅游云端的游戏世界
- html纵向固定导航菜单代码,CSS3单页面垂直固定导航
- Kali Linux 网络扫描秘籍 第八章 自动化 Kali 工具
- SQL—— Create table as select 与 使用select查询结果创建新表
- JavaScript学习总结(3)——JavaScript函数(function)
- 为什么部分Android用户不喜欢用iOS系统?
- 计算机软件系统测试报告模板,测试报告模板
- android 科技感动画,PPT最炫动画,3分钟学会超有科技感的扫描动画,轰动全场!...
- 在HTML中实现两个div并排显示
- python画地图柱状图_Python 如何画出漂亮的地图?
- 深度学习升级打怪之self attention笔记
- Python实战一:抓取onenet数据
- 利用爬虫有道词典进行翻译python3中的内置函数属性功能