说明
《Python 教程》 持续更新中,提供建议、纠错、催更等加作者微信: gairuo123(备注:pandas教程)和关注公众号「盖若」ID: gairuo。跟作者学习,请进入 Python学习课程。欢迎关注作者出版的书籍:《深入浅出Pandas》 和 《Python之光》。
object.__missing__(self, key)
方法用于字典之类处理缺失键的方法,而不是通用的对象方法。当你在一个字典子类中使用 d[key] 访问键值对,而该键并不存在于字典中时,Python 将调用 __missing__()
方法来处理这种情况。简单说,此方法由 dict.__getitem__()
在找不到字典中的键时调用以实现 dict 子类的 self[key]
。
需要注意的是,__missing__()
方法仅在使用 d[key]
访问字典中不存在的键时才会被调用,而在使用 d.get(key)
或 key in d
等方法时不会触发。
以下是一个示例说明如何在字典子类中使用 __missing__()
方法:
class MyDict(dict):
def __missing__(self, key):
return f'Key "{key}" is missing'
# 使用示例
my_dict = MyDict(a=1, b=2)
print(my_dict['a']) # 输出 1
print(my_dict['c']) # 输出 Key "c" is missing
在上面的示例中,MyDict 类是 dict 类的子类,我们重写了 __missing__()
方法,当访问一个不存在的键时,该方法会返回一个自定义的消息。
另一个示例是实现一个自定义的字典类,该类在获取字典中不存在的键时,返回一个默认值而不是引发 KeyError 异常。
class DefaultDict(dict):
def __init__(self, default_value, *args, **kwargs):
self.default_value = default_value
super().__init__(*args, **kwargs)
def __missing__(self, key):
return self.default_value
# 使用示例
my_dict = DefaultDict('N/A', a=1, b=2)
print(my_dict['a']) # 输出 1
print(my_dict['c']) # 输出 'N/A'
在上面的示例中,DefaultDict 类是 dict 类的子类,我们重写了 __missing__()
方法,使得当访问一个不存在的键时,该方法会返回一个默认值(这里是 'N/A'
)。这样,用户就不需要担心访问不存在的键时引发 KeyError
异常的问题。
https://docs.python.org/zh-cn/3/reference/datamodel.html#object.__missing__
更新时间:March 4, 2024, 9:03 p.m. 标签:python 特殊方法 字典