python的面向对象系统中object和type之间的关系

Python中所有东西都是对象,比较特殊的是:object和type是python中的两个源对象,它们是互相依赖对方来定义,不能分割来说,就如同讨论“先有鸡还是现有蛋”,一样让人蛋疼。

先介绍有两个黑魔法在后面要用到:
obj.__bases__ 指这个对象的父类,就是说从谁继承来的。
obj.__class__ 指这个对象的类型,类的类型是type

Python的面向对象系统有两条线索。

1.继承关系也就是父类和子类的关系(the subclass-superclass relationship),以object为起点;

所有对象的父类是object,因此object是没有父类的。
>>> object.__bases__
()

type也是object的子类
>>> issubclass(type, object)
True
>>> type.__bases__
(<class 'object'>,)

2.类型和实例之间的关系( the type-instance relationship ),以type为起点。

type是自身的实例,或说type(对象object)的class(类型type)是type
>>> isinstance(type, type)
True

>>> type(type)
<class 'type'>

>>> type.__class__
<class 'type'>

就连object都是type的实例
>>> isinstance(object, type)
True


最后总结一下:
type是一个比较特殊的类,这里引出另一概念元类,普通类实例化出来一个对象,但是元类实例化出来的是一个类,
int、float、str、boolean、tuple、dict、set等内置的数据类型其实也就是内置的类都是type实例。

>>> isinstance(int, type)
True

>>> int.__class__
<class 'type'>
>>> 


object是所有对象(包括类对象)的父类,int、float、str、boolean、tuple、dict、set内置类都是object子类。
>>> int.__bases__
(<class 'object'>,)

>>> issubclass(int, object)
True

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值