上一篇: Python2和Python3的差別 | 手把手教你入門Python之六十五 下一篇: 多态的使用 | 手把手教你入門Python之六十七 本文來自于千鋒教育在阿裡雲開發者社群學習中心上線課程 《Python入門2020最新大課》 ,主講人姜偉。
對象相關的内置函數
Python中的身份運算符⽤來判斷兩個對象是否相等;isinstance⽤來判斷對象和類之間的關系;issubclass⽤來判斷類與類之間的關系。
身份運算符
身份運算符⽤來⽐較兩個對象的記憶體位址,看這兩個對象是否是同⼀個對象。
class Person(object):
def __init__(self, name, age):
self.name = name
self.age = age
p1 = Person('張三', 18)
p2 = Person('張三', 18)
p3 = p1
print(p1 is p2) # False
print(p1 is p3) # True
isinstance
instance内置函數,⽤來判斷⼀個執行個體對象是否是由某⼀個類(或者它的⼦類)執行個體化建立出來的。
class Person(object):
def __init__(self, name, age):
self.name = name
self.age = age
class Student(Person):
def __init__(self, name, age, score):
super(Student, self).__init__(name, age)
self.score = score
class Dog(object):
def __init__(self, name, color):
self.name = name
self.color = color
p = Person('tony', 18)
s = Student('jack', 20, 90)
d = Dog('旺财', '⽩⾊')
print(isinstance(p, Person)) # True.對象p是由Person類建立出來的
print(isinstance(s, Person)) # True.對象s是有Person類的⼦類建立出來的
print(isinstance(d, Person)) # False.對象d和Person類沒有關系
issubclass
issubclass ⽤來判斷兩個類之間的繼承關系。
class Person(object):
def __init__(self, name, age):
self.name = name
self.age = age
class Student(Person):
def __init__(self, name, age, score):
super(Student, self).__init__(name, age)
self.score = score
class Dog(object):
def __init__(self, name, color):
self.name = name
self.color = color
print(issubclass(Student, Person)) # True
print(issubclass(Dog, Person)) # False