python中的type与object

    内容来自:https://www.zhihu.com/question/38791962 

目录

1. type , object,metaclass的关系

2. ABCmeta


1. type , object,metaclass的关系

    以下为自己的总结,所有的测试以python3为准:

    在面向对象体系里面,存在两种关系:
         - 父子关系,即继承关系,表现为子类继承于父类,如『蛇』类继承自『爬行动物』类,在python里要查看一个类型的父类,使用它的__bases__属性可以查看。
        - 类型实例关系,表现为某个类型的实例化,例如『萌萌是一条蛇』,英文说『萌萌 is an instance of snake』。在python里要查看一个实例的类型,使用它的__class__属性可以查看,或者使用type()函数查看。

   注意:继承关系使用实线从子到父连接类型实例关系使用虚线从实例到类型连接

  在Python的世界中,object是父子关系的顶端,所有的数据类型的父类都是它;type是类型实例关系的顶端,所有对象都是它的实例的。

     

 得出:

    1. object是type的实例

    2.object没有父类

    3.type是type的实例, type的父类是object

    4. 自定义类M是type的实例,M的父类是object

 

用下图来介绍object与type的关系:

进行验证:

 

接下来,定义元类(metaclass),元类是type或者type子类:

M类继承了type,可以看到M既是type的子类(M也是元类),又是type的实例。

接下来如何实例化M:

 可以看到TM是元类M的实例,并且TM还是object的子类

2. ABCmeta

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值