日韩黑丝制服一区视频播放|日韩欧美人妻丝袜视频在线观看|九九影院一级蜜桃|亚洲中文在线导航|青草草视频在线观看|婷婷五月色伊人网站|日本一区二区在线|国产AV一二三四区毛片|正在播放久草视频|亚洲色图精品一区

分享

Pythontype()函數(shù):動態(tài)創(chuàng)建類

 碼農(nóng)9527 2021-09-17

   我們知道,type()函數(shù)屬于Python內(nèi)置函數(shù),通常用來查看某個(gè)變量的具體類型。其實(shí),type()函數(shù)還有一個(gè)更高級的用法,即創(chuàng)建一個(gè)自定義類型(也就是創(chuàng)建一個(gè)類)。

    type()函數(shù)的語法格式有2種,分別如下:

type(obj) 
type(name, bases, dict)12復(fù)制代碼類型:[python]

    以上這2種語法格式,各參數(shù)的含義及功能分別是:

    第一種語法格式用來查看某個(gè)變量(類對象)的具體類型,obj表示某個(gè)變量或者類對象。

    第二種語法格式用來創(chuàng)建類,其中name表示類的名稱;bases表示一個(gè)元組,其中存儲的是該類的父類;dict表示一個(gè)字典,用于表示類內(nèi)定義的屬性或者方法。

    對于使用type()函數(shù)查看某個(gè)變量或類對象的類型,由于很簡單,這里不再做過多解釋,直接給出一個(gè)樣例: 

#查看 3.4 的類型print(type(3.4))#查看類對象的類型class CLanguage:
 passclangs = CLanguage()
print(type(clangs))1234567復(fù)制代碼類型:[python]

    輸出結(jié)果為:

<class 'float'>
<class '__main__.CLanguage'>12復(fù)制代碼類型:[python]

  這里重點(diǎn)介紹type()函數(shù)的另一種用法,即創(chuàng)建一個(gè)新類,先來分析一個(gè)樣例:

#定義一個(gè)實(shí)例方法def say(self):
 print("我要學(xué) Python!")#使用 type() 函數(shù)創(chuàng)建類CLanguage = type("CLanguage",(object,),dict(say = say, name = "開課吧廣場"))#創(chuàng)建一個(gè) CLanguage 實(shí)例對象clangs = CLanguage()#調(diào)用 say() 方法和 name 屬性clangs.say()
print(clangs.name)12345678910復(fù)制代碼類型:[python]

    注意,Python元組語法規(guī)定,當(dāng)(object,)元組中只有一個(gè)元素時(shí),最后的逗號(,)不能省略。

    可以看到,此程序中通過type()創(chuàng)建了類,其類名為CLanguage,繼承自objects類,且該類中還包含一個(gè)say()方法和一個(gè)name屬性。

    有讀者可能會問,如何判斷dict字典中添加的是方法還是屬性?很簡單,如果該鍵值對中,值為普通變量(如"C語言中文網(wǎng)"),則表示為類添加了一個(gè)類屬性;反之,如果值為外部定義的函數(shù)(如say()),則表示為類添加了一個(gè)實(shí)例方法。

    運(yùn)行上面的程序,其輸出結(jié)果為:

我要學(xué) Python!
開課吧廣場12復(fù)制代碼類型:[python]

    可以看到,使用type()函數(shù)創(chuàng)建的類,和直接使用class定義的類并無差別。事實(shí)上,我們在使用class定義類時(shí),Python解釋器底層依然是用type()來創(chuàng)建這個(gè)類。

    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多