class Person(object):
? ? def __init__(self,name,age):
? ? ? ? self.name = name
? ? ? ? self.age = age
p = Person("Alex",22)
上述代碼中葱绒,p 是通過(guò) Person 類(lèi)實(shí)例化的對(duì)象愚战,其實(shí)邪媳,不僅 p 是一個(gè)對(duì)象微谓,Person類(lèi)本身也是一個(gè)對(duì)象,因?yàn)樵?b>Python中一切事物都是對(duì)象桃煎。
如果按照一切事物都是對(duì)象的理論:p對(duì)象是通過(guò)執(zhí)行Person類(lèi)的構(gòu)造方法創(chuàng)建,那么Person類(lèi)對(duì)象應(yīng)該也是通過(guò)執(zhí)行某個(gè)類(lèi)的 構(gòu)造方法 創(chuàng)建。
print(type(p))? #輸出
print(type(Person)) #輸出
所以捕传,p對(duì)象是Person類(lèi)的一個(gè)實(shí)例,Person類(lèi)對(duì)象是 type 類(lèi)的一個(gè)實(shí)例扩劝,即:Person類(lèi)對(duì)象 是通過(guò)type類(lèi)的構(gòu)造方法創(chuàng)建乐横。
type是如何創(chuàng)建一個(gè)類(lèi)的呢求橄?
def __init__(self,name,age):
? ? self.name = name
? ? self.age = age
? ? print("init. ", name,age)
Person2 = type("Person2",(object,),{"__init__":__init__})
# Person2 第一參數(shù)是類(lèi)名
# (object,) 是這個(gè)類(lèi)要繼承的類(lèi)
# {"__init__":__init__}是這個(gè)類(lèi)的方法
p = Person2("Alex",22)
print(type(Person2))
了解類(lèi)本身是通過(guò)type創(chuàng)建的還是挺重要的,以后我們?cè)诖a中就可以動(dòng)態(tài)的生成類(lèi)了葡公,而不是提前必須先定義好罐农。 以后學(xué)到django web框架時(shí),生成動(dòng)態(tài)表單就用到這個(gè)知識(shí)點(diǎn)催什。