元類 實現ORM

2021-09-02 19:11:26 字數 869 閱讀 2424

type(類名,由父類名稱組成的元組(針對繼承情況下,可以為空),包含屬性的字典(key和value)
元類建立class類,class建立例項物件(元類一種特殊的類)

type 是動態建立類

def upper_attr(class_name, class_parents,class_attr):

# 遍歷屬性字典,把不是__開頭的屬性名字變為大寫

new_attr = {}

for name,value in class_attr.items():

if not name.startswith("__"):

new_attr[name.upper()] = value

# 呼叫 type 來建立乙個類

return type(class_name, class_parents,new_attr)

class foo(object, metaclass=upper_attr): #選擇使用哪個類,不用type執行,預設type建立

bar = 'bip'

print(hasattr(foo, 'bar'))

print(hasattr(foo, 'bar'))

f = foo()

print(f.bar)

1)orm是什麼

ve() 相當於執行

總結類名對應著表名,類中相關的資訊,對應著每個字段

建立這個類的目的是通過這樣乙個類,將類轉化為執行sql語句,

orm:不用主動手寫sql語句,定義乙個類,建立例項物件,呼叫某個方法,實現這個sql語句執行

建立乙個類,就像建立乙個表,這是django框架最核心的東西

閉包 裝飾器 元類 實現ORM

定義乙個函式 deffirst k,b 再定義乙個內部函式,內部函式用到了外部函式的引用 defsecond x print k x b 這裡就是閉包的結果 return second f first 2,3 f 1 f 2 f 3 複製 需要遵循的就是開放封閉原則,簡單來說,它規定已經實現的功能 ...

ORM模型類介紹,

所有的軟體開發過程中,都會涉及到物件和關係型資料庫,在使用者層面和業務邏輯層面,程式設計師編寫 都是物件導向的,當我們物件的資訊發生變化的時候,都需要將對應的資訊,傳到關係型資料庫中.而在此之前,需要我們編寫對應的sql語句來建立資料表,例如 建立乙個auth user表,需要定義好每乙個字段,給字...

元類實現單例

單例1 元類的單例 1 import settings23 4class mymeat type 5呼叫 init 得到mysql呼叫之前的時候就有乙個預設的例項化的結果 6def init self,class name,class bases,class dic 7建立乙個初始化的物件,並把這個...