type() 函數(shù)是 python 中的一個(gè)內(nèi)置函數(shù),主要用于獲取變量類型,在python內(nèi)置函數(shù)中,與該函數(shù)相似的還有另外一個(gè)內(nèi)置函數(shù) isinstance函數(shù)。
為房山等地區(qū)用戶提供了全套網(wǎng)頁設(shè)計(jì)制作服務(wù),及房山網(wǎng)站建設(shè)行業(yè)解決方案。主營業(yè)務(wù)為成都網(wǎng)站建設(shè)、網(wǎng)站設(shè)計(jì)、房山網(wǎng)站設(shè)計(jì),以傳統(tǒng)方式定制建設(shè)網(wǎng)站,并提供域名空間備案等一條龍服務(wù),秉承以專業(yè)、用心的態(tài)度為用戶提供真誠的服務(wù)。我們深信只要達(dá)到每一位用戶的要求,就會(huì)得到認(rèn)可,從而選擇與我們長期合作。這樣,我們也可以走得更遠(yuǎn)!
1 | type(object) |
參數(shù):
object : 實(shí)例對(duì)象。
返回值:直接或者間接類名、基本類型
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 | b=12.12 c="hello" d=[1,2,3,"rr"] e={"aa":1,"bb":"cc"}
print(type(b)) print(type(c)) print(type(d)) print(type(e))
print("***"*20)
classPerson(object): def__init__(self,name): self.name=name
defp(self): print("this is a methond")
print(Person) tom=Person("tom") print("tom實(shí)例的類型是:%s"%type(tom)) # 實(shí)例tom是Person類的對(duì)象。 |
輸出結(jié)果:
1 2 3 4 5 6 7 | ************************************************************ tom實(shí)例的類型是: |
isinstance() 會(huì)認(rèn)為子類是一種父類類型,考慮繼承關(guān)系。
type() 不會(huì)認(rèn)為子類是一種父類類型,不考慮繼承關(guān)系。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 | # !usr/bin/env python # -*- coding:utf-8 _*- """ @Author:何以解憂 @Blog(個(gè)人博客地址): shuopython.com @WeChat Official Account(微信公眾號(hào)):猿說python @Github:www.github.com
@File:python_type.py @Time:2019/11/22 21:25
@Motto:不積跬步無以至千里,不積小流無以成江海,程序人生的精彩需要堅(jiān)持不懈地積累! """
classPeople: pass
classbody(People): pass
print(isinstance(People(),People)) # returns True print(type(People())==People) # returns True print(isinstance(body(),People)) # returns True print(type(body())==People) # returns False |
輸出結(jié)果:
1 2 3 4 | True True True False |
代碼分析:
創(chuàng)建一個(gè)People對(duì)象,再創(chuàng)建一個(gè)繼承People對(duì)象的body對(duì)象,使用 isinstance() 和 type() 來比較 People() 和 People時(shí),由于它們的類型都是一樣的,所以都返回了 True。
而body對(duì)象繼承于People對(duì)象,在使用isinstance()函數(shù)來比較 body() 和 People時(shí),由于考慮了繼承關(guān)系,所以返回了 True,使用 type() 函數(shù)來比較 body() 和 People時(shí),不會(huì)考慮 body() 繼承自哪里,所以返回了 False。
如果要判斷兩個(gè)類型是否相同,則推薦使用isinstance()。