文章预览
Python 内置类型的特殊方法(含魔术方法与其它方法)基本都是由 C 语言独立实现,在 Python 层面不存在调用关系。 但是,也有例外:一个非常神秘的魔术方法。 这个方法非常不起眼,用途狭窄,我几乎从未注意过它。然而,当发现它可能是上述“定律”的唯一例外情况时,我认为值得再写一篇文章来详细审视一下它。 本文主要关注的问题有: (1) __missing__()到底是何方神圣? (2) __missing__()有什么特别之处?擅长“大变活人”魔术? (3) __missing__()是否真的是上述发现的例外?如果是的话,为什么会有这种特例? 1、有点价值的__missing__() 从普通的字典中取值时,可能会出现 key 不存在的情况: dd = { 'name' : 'PythonCat' } dd.get( 'age' ) # 结果:None dd.get( 'age' , 18 ) # 结果:18 dd[ 'age' ] # 报错 KeyError dd.__getitem__( 'age' ) #
………………………………