欧美一级特黄大片做受成人-亚洲成人一区二区电影-激情熟女一区二区三区-日韩专区欧美专区国产专区

Python中類與類型的區(qū)別是什么-創(chuàng)新互聯(lián)

今天就跟大家聊聊有關(guān)Python中類與類型的區(qū)別是什么,可能很多人都不太了解,為了讓大家更加了解,小編給大家總結(jié)了以下內(nèi)容,希望大家根據(jù)這篇文章可以有所收獲。

為額濟納等地區(qū)用戶提供了全套網(wǎng)頁設(shè)計制作服務(wù),及額濟納網(wǎng)站建設(shè)行業(yè)解決方案。主營業(yè)務(wù)為成都網(wǎng)站設(shè)計、成都網(wǎng)站建設(shè)、外貿(mào)網(wǎng)站建設(shè)、額濟納網(wǎng)站設(shè)計,以傳統(tǒng)方式定制建設(shè)網(wǎng)站,并提供域名空間備案等一條龍服務(wù),秉承以專業(yè)、用心的態(tài)度為用戶提供真誠的服務(wù)。我們深信只要達到每一位用戶的要求,就會得到認可,從而選擇與我們長期合作。這樣,我們也可以走得更遠!

1.經(jīng)典類與新式類

在了解Python的類與類型前,需要對Python的經(jīng)典類(classic classes)與新式類(new-style classes)有個簡單的概念。

在Python 2.x及以前的版本中,由任意內(nèi)置類型派生出的類(只要一個內(nèi)置類型位于類樹的某個位置),都屬于“新式類”,都會獲得所有“新式類”的特性;反之,即不由任意內(nèi)置類型派生出的類,則稱之為“經(jīng)典類”。

“新式類”和“經(jīng)典類”的區(qū)分在Python 3.x之后就已經(jīng)不存在,在Python 3.x之后的版本,因為所有的類都派生自內(nèi)置類型object(即使沒有顯示的繼承object類型),即所有的類都是“新式類”。

2.類的實例與對象

在很多語言中,類的實例與類的對象,只是同一事物的不同名稱。而在Python中,類的對象與類的實例,是完全不同的概念。在本文中,所稱的類對象,是指由class代碼塊執(zhí)行后創(chuàng)建的類對象,而類的實例則是由類對象所創(chuàng)建的實例。這里只做簡單提及,便于下文理解,要更深入的理解這個概念,可以參考“python一切皆對象”的相關(guān)知識。

3.類實例的類與類型

嘗試分別在Python 2.x 和 3.x 版本中運行如下代碼:

class A():pass
class B():pass

a = A()
b = B()

if __name__ == '__main__':
  print(type(a))
  print(type(b))
  print(type(a) == type(b))
  print(a.__class__)
  print(b.__class__)
  print(a.__class__ == b.__class__)

Python 2.6.9 及 2.7.10 的運行結(jié)果:

Python中類與類型的區(qū)別是什么

在Python 2.x及以前的版本,所有經(jīng)典類的實例都是“instance”(實例類型)。所以比較經(jīng)典類實例的類型(type)毫無意義,因為所有的經(jīng)典類實例都是instance類型,比較的結(jié)果通常為True。更多情況下需要比較經(jīng)典類實例的__class__屬性來獲得我們想要的結(jié)果(或使用isinstance函數(shù))。

Python 3.5.1 運行結(jié)果

Python中類與類型的區(qū)別是什么

在Python 3.x及之后的版本,類和類型已經(jīng)合并。類實例的類型是這個實例所創(chuàng)建自的類(通常是和類實例的__class__相同),而不再是Python 2.x版本中的“instance”實例類型。

需要注意的是,在Python 2.x版本中,“經(jīng)典類的實例都是instance類型”,這個結(jié)論只適用于經(jīng)典類。對新式類和內(nèi)置類型的實例,它們的類型要更加明確。

修改之前的代碼驗證上述觀點,嘗試讓class a 和 class b 顯示繼承自object,成為“新式類”。

class A(object):pass
class B(object):pass

a = A()
b = B()

if __name__ == '__main__':
  print(type(a))
  print(type(b))
  print(type(a) == type(b))
  print(a.__class__)
  print(b.__class__)
  print(a.__class__ == b.__class__)

Python 2.7.10 運行結(jié)果:

Python中類與類型的區(qū)別是什么

代碼運行結(jié)果和Python 3.x是完全相同的,可以看出Python 2.x 新式類實例的類型就是這個實例所創(chuàng)建自的類。同時進一步印證在Python 3.x中所有的類都是新式類(顯示或隱式繼承自object類)。

接著對內(nèi)置類型進行驗證,嘗試運行以下代碼

print(type([1, 2, 3]))

Python 2.7.10運行結(jié)果:

Python中類與類型的區(qū)別是什么

可以看出,內(nèi)置類型實例的類型,也是同新式類一樣,是這個實例所創(chuàng)建自的類。在示例代碼中,我們創(chuàng)建了一個list,所以實例的類型為list類型。

4.類的類型

如果說,一個類實例的類型是創(chuàng)建它的類(python 3.x),那一個類的類型又是什么???

繼續(xù)使用代碼嘗試驗證:

class A():pass
class B():pass

if __name__ == '__main__':
  print(type(A))
  print(type(B))
  print(type(A) == type(B))

Python 2.7.10 運行結(jié)果:

Python中類與類型的區(qū)別是什么

從運行結(jié)果我們可以看出,在Python 2.x 中,經(jīng)典類的類型都是classobj。type(A) == type(B)結(jié)果為True,說明它們是同一種類型。

Python 3.5.1運行結(jié)果:

Python中類與類型的區(qū)別是什么

從運行結(jié)果我們可以看出,所有的類型都是type類,再次印證在Python 3.x 類與類型已經(jīng)完全合并,類即類型,類型即類。

再次修改代碼,使 class A 和 B 顯式繼承自 object,成為新式類,再在Python 2.7.10 下運行查看結(jié)果:

Python中類與類型的區(qū)別是什么

運行結(jié)果顯而易見,和Python 3.x 是一樣的,因為它們都是新式類。

注:在運行結(jié)果中,Python 2.x 顯示為 <type 'type'>,而 Python 3.x 顯示為<class 'type'>, 僅是顯示方法不同,可以理解為等價,因為在Python 3.x類即類型。

參考官方文檔:https://docs.python.org/3/library/stdtypes.html#bltin-type-objects

Type objects represent the various object types. An object's type is accessed by the built-in functiontype(). There are no special operations on types. The standard moduletypesdefines names for all standard built-in types.

Types are written like this:<class'int'>.

再來進行一個有趣的嘗試:

print(type(type))

在python 2.x 和 3.x 運行結(jié)果都是一樣的,type類型本身也是類(新式類和內(nèi)置類型的類與類型已經(jīng)合并),它自己也是type類型。

Python中類與類型的區(qū)別是什么

Python中類與類型的區(qū)別是什么

5.類是Type類的實例

有上文的測試可以得知:所有的類型都是type類。從另一個角度理解,類就是type類的實例,所有的新式類,都是由type類實例化創(chuàng)建而來,并且顯式或隱式繼承自object。

type([1, 2, 3])

得到運行結(jié)果:<class 'list'>,說明[1, 2, 3]這個list是list類的實例。

同樣的

type(list)

得到運行結(jié)果:<class 'type'>,也可以說明list這個類是type類的實例。

通過調(diào)用__class__屬性可以得到同樣的結(jié)果:

list.__class__
[1, 2, 3].__class__

說明類對象是type類的實例。

6.有趣的循環(huán)

前文提到,在Python 3.x 中,所有的類都顯式或隱式的派生自object類,type類也不例外。類型自身派生自object類,而object類派生自type,二者組成了一個循環(huán)的關(guān)系。

通過以下代碼來驗證

isinstance(object, type)
isinstance(type, object)

運行結(jié)果:

Python中類與類型的區(qū)別是什么

看完上述內(nèi)容,你們對Python中類與類型的區(qū)別是什么有進一步的了解嗎?如果還想了解更多知識或者相關(guān)內(nèi)容,請關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道,感謝大家的支持。

當(dāng)前文章:Python中類與類型的區(qū)別是什么-創(chuàng)新互聯(lián)
標(biāo)題鏈接:http://aaarwkj.com/article14/pjjde.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供響應(yīng)式網(wǎng)站、域名注冊、網(wǎng)站制作手機網(wǎng)站建設(shè)、網(wǎng)站設(shè)計公司靜態(tài)網(wǎng)站

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

綿陽服務(wù)器托管
国产精品亚洲国产精品| 国产精品综合av一区二区国产馆| 西西美女掰开阴让你看| 99热视频在线观看免费| 日本欧美二区在线看| 亚洲新大香蕉视频在线播放| 午夜男女激情在线观看| 成人三级中文字幕电影| 亚洲激情在线观看一区| 日韩黄色资源在线观看| 亚洲国产午夜精品不卡| 国产在线一区二区三区观看| 老熟女露脸吞精一二三四区| 自偷自拍在线免费观看| 视频一区中文字幕在线| 青青草原这里只有精品| 久久av少妇亚洲精品| 国内校园性猛交视频网站| 色婷婷精品综合久久狠狠| 青青草成年人免费视频| 91精品蜜臀国产综合久久久久久| 欧美人与性一区二区三区| 国产成人在线观看av| 蜜桃av网站在线播放| 清纯美女爱爱高潮av| 欧美亚洲午夜一二综合| 人人妻人人澡人人爽人人dvd| 国产亚洲欧美成人精品久久| 一区二区三区欧美日| 亚洲精品一品区二品区三区| 99久久中文字幕伊人| 伊人久久综在合线亚洲| 国产女人高潮流白丝视频| 亚洲一区二区三区四区五区六| 国产成人免费高清av| 午夜福利视频欧美成人| 香蕉视频欧美久久精品| 91日本视频在线播放| 午夜看片福利欧美熟女| 中文字幕伦理一区二区| 国产精品久久久久久久亚洲|