python 判斷型別

2022-03-02 12:14:11 字數 2498 閱讀 7069

函式isinstance()可以判斷乙個變數的型別,既可以用在python內建的資料型別如str、list、dict,也可以用在我們自定義的類,它們本質上都是資料型別。

假設有如下的 person、student 和 teacher 的定義及繼承關係如下:

class

person(object):

def__init__

(self, name, gender):

self.name =name

self.gender =gender

class

student(person):

def__init__

(self, name, gender, score):

super(student, self).

__init__

(name, gender)

self.score =score

class

teacher(person):

def__init__

(self, name, gender, course):

super(teacher, self).

__init__

(name, gender)

self.course =course

p = person('

tim', '

male')

s = student('

bob', '

male

', 88)

t = teacher('

alice

', '

female

', '

english

')

當我們拿到變數 p、s、t 時,可以使用 isinstance 判斷型別:

>>>isinstance(p, person)

true

#p是person型別

>>>isinstance(p, student)

false

#p不是student型別

>>>isinstance(p, teacher)

false

#p不是teacher型別

這說明在繼承鏈上,乙個父類的例項不能是子類型別,因為子模擬父類多了一些屬性和方法。

我們再考察 s :

>>>isinstance(s, person)

true

#s是person型別

>>>isinstance(s, student)

true

#s是student型別

>>>isinstance(s, teacher)

false

#s不是teacher型別

s 是student型別,不是teacher型別,這很容易理解。但是,s 也是person型別,因為student繼承自person,雖然它比person多了一些屬性和方法,但是,把 s 看成person的例項也是可以的。

這說明在一條繼承鏈上,乙個例項可以看成它本身的型別,也可以看成它父類的型別。

請根據繼承鏈的型別轉換,依次思考 t 是否是 person,student,teacher,object 型別,並使用isinstance()判斷來驗證您的答案。

class

person(object):

def__init__

(self, name, gender):

self.name =name

self.gender =gender

class

student(person):

def__init__

(self, name, gender, score):

super(student, self).

__init__

(name, gender)

self.score =score

class

teacher(person):

def__init__

(self, name, gender, course):

super(teacher, self).

__init__

(name, gender)

self.course =course

t = teacher('

alice

', '

female

', '

english')

print

(isinstance(t,person))

print

(isinstance(t,student))

print

(isinstance(t,teacher))

print (isinstance(t,object))

true

false

true

true

Python型別判斷

有次面試被問到python中怎麼判斷資料型別。答 type 和isinstance type 方法的語法 type name,bases,dict 其中name是類的名稱,bases是基類的元組,dict是類內定義的命名空間變數。當有 乙個引數時它的返回值是物件型別,有三個引數時,返回值是新的型別物...

Python 判斷變數型別

資訊來自於如下 使用python判斷變數型別時候要使用 isinstance 函式而非 type 函式進行判斷 比如 a 111 isinstance a,int trueisinstance 和 type的區別在於 class a pass class b a pass isinstance a ...

Python判斷字元型別

輸入一行字元,輸出其中空格 數字 中文字元 英文本元和其他字元的個數。str input 請輸入一行字元 n chinese 0letters 0space 0digit 0others 0for c in str if c.isspace space 1elif c.isdigit digit 1...