標籤:style blog http color 使用 io 檔案 資料
相對於7來說,8的api改進了不少,用官方的話來說就是更加物件導向了.
下面探究一下具體的改動.
準備知識:python裝飾器的使用 http://blog.csdn.net/thy38/article/details/4471421
在8中,api介面分為traditaional style和record style,traditional style指的就是我們在7中使用的類型,def (cr,uid,ids,context)式的文法.而record style精簡了參數,只保留了self和args,形如def (self,args)
__all__ = [ ‘Environment‘, ‘Meta‘, ‘guess‘, ‘noguess‘, ‘model‘, ‘multi‘, ‘one‘, ‘cr‘, ‘cr_context‘, ‘cr_uid‘, ‘cr_uid_context‘, ‘cr_uid_id‘, ‘cr_uid_id_context‘, ‘cr_uid_ids‘, ‘cr_uid_ids_context‘, ‘constrains‘, ‘depends‘, ‘onchange‘, ‘returns‘, ]
由api.py檔案中的定義可以看出,可供使用的有這麼多屬性.接下來我們一一看看他們的用法.
Environment:ORM記錄的封裝類,封裝了cr,uid,context等屬性,同時提供了註冊訪問,記錄緩衝,管理重新計算的資料結構
Meta:自動裝飾traditional style的裝飾類,同時實現了對returns裝飾的繼承
guess:該裝飾標識方法既可以被traditional style調用也可被record style方式調用
noguess:阻止所有guess的作用
model:裝飾record-style方法中的self為記錄集
multi:同model,區別在於model中的相當於traditional-style中的model.method(cr,uid,args,context=context),而multi為model.method(cr,uid,ids,args,context=context)
one:裝飾record-style方法中的self為單一執行個體,被裝飾的方法將會在每一條記錄中迴圈調用,返回一個list結果集,如果和@returns一塊用了,將返回串連的結果.
cr:裝飾traditional-style方法,標識將cr作為一個參數
cr_context:裝飾traditional-style方法,標識將cr,context作為參數
cr_uid:裝飾traditional-style方法,標識將cr,uid作為參數
cr_uid_context:裝飾traditional-style方法,標識將cr,uid,context作為參數
cr_uid_id:裝飾traditional-style方法,標識將cr,uid,id作為參數
cr_uid_id_context:裝飾traditional-style方法,標識將cr,uid,id,context作為參數
cr_uid_ids:裝飾traditional-style方法,標識將cr,uid,ids作為參數
cr_uid_ids_context:裝飾traditional-style方法,標識將cr,uid,ids,context作為參數
v7:裝飾方法只支援traditional-style api,新api的方法需要重寫一個新方法並用v8裝飾
v8:裝飾方法只支援record-style api,舊api的方法需要重寫一個新方法並用v7裝飾
constrains:返回一個指定了現實了欄位限制的方法的欄位依賴的裝飾器,每個參數都必須是欄位名
depends:返回一個指定了compute方法(或new style function fields)的依賴的裝飾器,每個參數必須為以.隔開的欄位名組成的字串
onchagne:返回一個對給出的fields的onchange方法的裝飾器,每個參數必須為欄位名
returns(model,downgrade=None):返回一個返回參數model的執行個體的方法的裝飾器,參數model:model名或self(當前model),參數downgrade:要從record-style轉換成traditional-style的方法