Python中UserDict、UserString、UserList有用嗎?
一個繼承Python內建結構的坑兒。從Python 2.2開始,Python支援繼承Python內建結構,如list、dict。為了簡化專案內容,直接繼承了dict,但是結果和預期不一樣。現在來好好研究研究:
舉個例子:
In : class NewDict(dict): ...: def __getitem__(self, key): ...: return 42 ...: In : d = NewDict(a=1) In : d Out: {'a': 42} In : d2 = {} In : d2.update(d) In : d2 Out: {'a': 1}
也就是說NewDict的__getitem__方法被dict.update給忽略了。
In : from UserDict import UserDict In : class NewDict(UserDict): ...: def __getitem__(self, key): ...: return 42 ...: In : d = NewDict(a=1) In : d['b'] =2 In : d Out: {'a': 1, 'b': 2} In : d['b'] Out: 42 In : d2 = {} In : d2.update(d) In : d2 Out: {'a': 42, 'b': 42}
這才是對的呀。
後來在PyPy的文件中發現了原因,也就是這種C實現的結構的內建方法大部分會忽略過載的那個方法。
之前以為UserDict這樣的類是歷史遺留問題,現在才知道是有原因的。原來UserDict、UserString、UserList這樣的模組是非常必要的。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/756/viewspace-2837505/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 學python對金融有用嗎Python
- 學python入門有用嗎?Python全棧開發Python全棧
- 普通上班族學Python有用嗎?Python
- 普通人學Python能幹什麼?有用嗎?Python
- 普通人學Python有用嗎?就業前景如何?Python就業
- IT培訓報班有用嗎?
- 求助有用 upupw 搭建 Laravel 的嗎?Laravel
- CRM管理系統真的有用嗎?
- 微信域名防封真的有用嗎
- 有用 AT 命令測試過晶片的嗎?晶片
- 那些有趣/有用的 Python 庫Python
- 有用過grpc的嗎?Couldn't find descriptorRPC
- 蹭來的流量到底有用嗎
- adobe國際認證證書有用嗎?
- laravel octane有用於生產的大佬嗎?Laravel
- 一些有用的Python庫Python
- 百度正在暴力截流SEO還有用嗎
- 快手小程式的分銷功能有用嗎?
- 10個超級有用的Python工具!Python
- 五個最有用的Python技巧 - dannysteenmanPython
- 久帝鍛鍊法是怎樣的?有用嗎?
- 有用 git 管理功能測試用例的公司嗎?Git
- 【與ChatGPT的有趣對話】Adobe認證有用嗎?ChatGPT
- 工作中那些有用的工具
- 讀大學有用嗎?(推薦給在校大學生)
- 網站蜘蛛日誌如何分析?對優化有用嗎?網站優化
- 你有用過table佈局嗎?說說你的感受
- 你會抓包嗎?都有用過哪些抓包工具?
- Laravel Filament 後臺皮膚,有用的人嗎?一起?Laravel
- 參加java培訓真的能學到有用的嗎Java
- 你有用過HTML5中的datalist標籤嗎?說說你對它的理解HTML
- python中不區分大小寫嗎Python
- Python中的字典遍歷有序嗎?Python
- 資料字典真的有用嗎?--開源軟體誕生12
- 有用過Handlebars模板引擎嗎?它的工作原理是怎樣的?
- python就是爬蟲嗎-python就是爬蟲嗎Python爬蟲
- 學新媒體運營有用嗎?新媒體運營入門
- 你有用過彈性佈局嗎?說說你對它的理解