实例

实例是调用类对象创建的具体对象。例如调用内置类型 int,创建的所有整数,都是 int 类的实例。可通过内置函数 isinstance() 进行实例检查。

int('1')
1
isinstance(1,int)
True

Python 中所有的实例对象,都是 object 的实例。所有的类都是 object 的子类,也被视为 object 的实例;所有的类也被视为默认的元类(创建类的类)type 的实例。

如果一个实例对象应该视为某个类的实例,可以通过魔法方法 __instancecheck__() 来重载 isinstance() 函数,自定义实例检查行为。

isinstance(1,object), isinstance([],object)
(True, True)
isinstance(int,object)
True
isinstance(int,type)
True

下面定义一个 “人” 类,来对实例进行说明:

class Person:
    '这是人类'
    # 定义人的属性
    def __init__(self, name):
        self.name = name
        self.ears = '耳朵'
        self.brain = '大脑'
        self.hands = '双手'
    
    # 人有生活
    def live(self):
        print(f'{self.name}{self.ears}'
              '听着音乐,'
              '享受美好生活。')
        
    # 还有工作
    def work(self):
        print(f'{self.name}{self.brain}和'
              f'{self.hands}'
               '勤劳致富。')
        
# 造人
xm = Person('小明')
xz = Person('小张')

上述 “人” 类对象 Person 是类对象,调用类对象创建的 xm 和 xz,是两个具体的 “人”,是实例对象。

Person
__main__.Person
xm
<__main__.Person at 0x24cf9ef6d68>
xz
<__main__.Person at 0x24cf9ef6d30>
isinstance(xm, Person), isinstance(xz, Person)
(True, True)
isinstance(Person, object), isinstance(Person, type)
(True, True)