python中type、class、object的关系

type、class、object的关系

  1. 先上一段代码
a = 1
b = 'abc'

print(type(1)) 			# <class 'int'>
print(type(int))		# <class 'type'>
print(type(b))			# <class 'str'>
print(type(str))		# <class 'type'>

print(type(type))		# <class 'type'>

结论:

​ 1是int类型,而int是一个type类型,int本身也是一个对象,是由type这个类来生成的,type也是一个类,同时也是一个对象;它是用来生成类的。

type —> int -----> 1
type ----> class ----> obj

  1. 学习python的同学们都知道这两句话:
    • object类是所有新式类的父类。
    • type是所有类的类。

那么type和object是什么关系呢?

object是一个新式类,我们可以通过object.__class__object.__bases__来获取object所属的类核他的父类。

>>> object.__class__
<type 'type'>

这说明 object类是一个type元类的实例。这与type是所有新式类的类这一说法相符合。

>>> object.__bases__
()

这说明 object类已经处于继承链条的顶端,是所有类的父类。

>>> type.__class__
<type 'type'

这说明type自身的类就是type。就是说type元类也就是由type自身创建的。

>>> type.__base__
<type 'object'>

这就是说type这一元类的父类是object。

我们来捋一捋,也就是说:
object类是由元类type创建的,但是type类又继承了object类。 type元类的类则是由type元类自身创建的。

当我们把python内置的类和自己创建的类一起表示出来,可以得到下面的关系图:

简单说明一下出了type和object关系的其他部分。
int、float、str、boolean、tuple、dict、set等内置的数据类型其实也就是内置的类。
type是一个比较特殊的类,他是所有类的类。所以估计要与int等这种类保持一致,所以也是小写的?

我们日常在程序中创建的具体的整数, 浮点数、字典、元祖等就是上面int、float、boolean等的实例。

我们写代码的创建的自定义类分两种,一种是新式类,一种是经典类。
新式类的类都是type,它的最终父类是object。
经典类的创建者,也是是经典类的类是一个叫classobj的东西,classobj的类才是type。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值