大师兄的Python源码学习笔记(二十二): 虚拟机中的类机制(

2021-07-02  本文已影响0人  superkmi

大师兄的Python源码学习笔记(二十一): 虚拟机中的函数机制(三)
大师兄的Python源码学习笔记(二十三): 虚拟机中的类机制(二)

一、Python中的对象模型

类型 说明
type对象 表示Python内置的类型
class对象 表示Python程序员定义的类型
instance对象 表示由class对象创建的实例
1. 对象间的关系
class A(object):
        ...
a = A()

is-kind-of关系: 对应于基类子类之间的关系(object与A)。
is-instance-of关系: 对应于实例之间的关系(A与a)。

>>>class A(object):
>>>    ...
>>>a = A()
>>>
>>>if __name__ == '__main__':
>>>    print(A.__bases__)
(<class 'object'>,)
>>>class A(object):
>>>    ...
>>>a = A()
>>>
>>>if __name__ == '__main__':
>>>    print(A.__class__)
>>>    print(a.__class__)
<class 'type'>
<class '__main__.A'>
>>>class A(object):
>>>    ...
>>>a = A()
>>>
>>>if __name__ == '__main__':
>>>    print(isinstance(a,A))
>>>    print(issubclass(A,object))
True
True
2. <class 'type'>和<class 'object'>
  • 任何一个instance对象type都是一个class对象
>>>class A(object):
>>>    ...
>>>a = A()
>>>
>>>if __name__ == '__main__':
>>>    print(a.__class__)
<class '__main__.A'>
  • 任何一个class对象type都是metaclass对象,在大多数情况下metaclass都是<class 'type'>,对应PyType_Type
>>>class A(object):
>>>    ...
>>>a = A()
>>>
>>>if __name__ == '__main__':
>>>    print(A.__class__)
<class 'type'>
>>>class A(object):
>>>    ...
>>>a = A()
>>>
>>>if __name__ == '__main__':
>>>    print(A.__class__.__bases__)
(<class 'object'>,)
上一篇 下一篇

猜你喜欢

热点阅读