0x01:对象相关的内置函数

Python中的身份运算符用来判断两个对象是否相等;isinstance用来判断对象和类之间的关系;issublcass用啊里判断类与类之间的关系。

(1)身份运算符

身份运算符用来比较两个对象的内存地址,看这两个对象是否是同一个对象。

  1. class Person(object):
  2. def __init__(self, name, age):
  3. self.name = name
  4. self.age = age
  5. p1 = Person('张三', 18)
  6. p2 = Person('张三', 18)
  7. p3 = p1
  8. print(p1 is p2) # False
  9. print(p1 is p3) # True

(2)isinstance

instance内置函数,用来判断一个实例对象是否是由某一个类(或者它的子类)实例化创建出来的。

  1. class Person(object):
  2. def __init__(self, name, age):
  3. self.name = name
  4. self.age = age
  5. class Student(Person):
  6. def __init__(self, name, age, score):
  7. super(Student, self).__init__(name, age)
  8. self.score = score
  9. class Dog(object):
  10. def __init__(self, name, color):
  11. self.name = name
  12. self.color = color
  13. p = Person('tony', 18)
  14. s = Student('jack', 20, 90)
  15. d = Dog('旺财', '白色')
  16. print(isinstance(p, Person)) # True.对象p是由Person类创建出来的
  17. print(isinstance(s, Person)) # True.对象s是有Person类的子类创建出来的
  18. print(isinstance(d, Person)) # False.对象d和Person类没有关系

(3)issubclass

issubclass 用来判断两个类之间的继承关系。

  1. class Person(object):
  2. def __init__(self, name, age):
  3. self.name = name
  4. self.age = age
  5. class Student(Person):
  6. def __init__(self, name, age, score):
  7. super(Student, self).__init__(name, age)
  8. self.score = score
  9. class Dog(object):
  10. def __init__(self, name, color):
  11. self.name = name
  12. self.color = color
  13. print(issubclass(Student, Person)) # True
  14. print(issubclass(Dog, Person)) # False