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建立乙個初始化的物件,並把這個...