91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

換個角度理解python元編程

發布時間:2020-09-22 05:51:51 來源:網絡 閱讀:546 作者:bluehook 欄目:編程語言

元編程這個概念本身不新,只是沒有發現原來很早就在用這個東西,所以python等下再聊,先理一理怎么理解編程這個事情。
我仔細思考,其實是在做一件設計想法,紀錄想法,實現想法的過程。
怎么樣設計想法?應該需要一些圖形,文字通過一定格式紀錄下來,反復修改,最好是有一個規范或者工具讓其他人也能明白和理解,方便交流。這個問題在編程這里也就是進入到編程語言的選擇上面來,也可以自己制定一個規范,不管你用lex+yacc語法制導還是設計LLVM的AST,反正結果是要一種編程語言來設計你的想法。
選定了設計想法的規范也就是編程語言,現在就是怎么樣來紀錄想法,顯而易見不可能是流水賬式的紀錄,你得把想法重點理清楚,想法的關鍵字是什么,有些什么用途,有沒有關聯的事務,這里就是紀錄想法的格式,對應到編程就是你用什么設計模式,你是用傳統的類繼承,還是鴨子類型的接口或者猴子補丁的方式來紀錄想法。
有了紀錄的想法圖紙,對應到編程就是靜態的代碼字面量,就能真正的實現想法,根據想法圖紙生成真實的對象。
這個過程和元編程有什么關系?如果你明白上面的過程,我就可以這樣描述:lex+yacc可以創建編程語言,編程語言可以創建元編程,元編程可以創建類,類可以創建對象實例。
那到底什么是元編程呢,C++里面他的實現叫做模板和宏,python里面他可以用裝飾器實現,也可以用type元類型實現,他是在編程語言和類之間的一層設計技術,yacc生成的對象是編程語言,編程語言生成的對象是元編程對象,元編程對象生成的對象是類,類生成的對象是實例。
C的宏和模板出現得很早很早,本質也很簡單,就像是一份留白的合同,你填上名字就能用。
python對象有2個重要的容器,一個是繼承元組,一個是屬性字典,所有的屬性包括方法都是放在屬性字典里面,這個2個容器在init之前就已經生成好,如果你要在init之前做一些處理,比如捕獲子類的屬性名把字符串類型的屬性名前面都加上str,把方法名首字符都大寫,強制子類使用一些編程規約,還或者加載一些緩存的數據,實現方法重載等等。當然子類可以在init做自己的處理,如果你是一個框架的設計者,自動化一些背后的處理確實看起來很高級。所以元編程的本質就是一種增加樂趣的玩具,應為編碼很枯燥的。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

南靖县| 广平县| 都安| 温州市| 兴国县| 舒兰市| 尚义县| 洛川县| 峨眉山市| 原阳县| 贡山| 河东区| 鹤山市| 南宫市| 阿拉善左旗| 嫩江县| 古田县| 大新县| 吴堡县| 搜索| 昔阳县| 凤台县| 鄂尔多斯市| 上思县| 金堂县| 南乐县| 宜兴市| 吐鲁番市| 阿拉尔市| 马尔康县| 安岳县| 兴山县| 巴林右旗| 古浪县| 会昌县| 太白县| 寿光市| 星子县| 郴州市| 阜平县| 界首市|