python之type、object、class关系(一切皆对象)

在python中一切皆对象,但是对象是什么?是类的实例化,既然一切皆对象,那么对象的模版,类也是对象,那不就成了对象创建了对象了吗?下面看这样一个例子

a = 1
print(type(a))
print(type(int))
print(type(type))

运行结果

<class 'int'>
<class 'type'>
<class 'type'>

分析:

首先,a 是一个整型的变量对象,是类int创建的,类int也是对象(python一切皆对象),创建类int的对象的类是type,也就是说类type,创建了类int这个对象,那么类type也是一个对象,那么它是从那来的。从运行结果中可以看出,类type创建了类type的对象,我自己实例化我自己。

type是一个类也是一个对象,所有的类都是type的对象创建,这样就理解了python一切皆对象的概念,对象是由类创建的,类是由type对象创建的,而type对象是由type类自己创建的,type类自己本身就是实例化的对象,所以python中一切皆对象,所有的类都是由type对象创建的,type对象是由它本身的类创建的

还有一个问题,在java中所有的类都是默认继承object类,但是在python中呢

class a:
    pass

class b(a):
    pass
print(b.__base__)
print(a.__base__)

结果:

<class '__main__.a'>
<class 'object'>

分析:

我们指定了b类的继承是a类,那么b类继承了a类,但是a类没有指定继承,默认继承了onject类,所以python和java一样所有的类最终都是继承object这个基类,这很好理解,但是type类由有没有继承onject类呢

print(type.__base__)
<class 'object'>

type类也继承了object关系,那么可以得到和java一样的结论

python中的类最终都是继承了object类,type类也同样继承了object类

现在又一个问题,type类继承了object类,但是根据前面的结论,object类应该是由type类创建的,那下面验证一下

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

可以看到object类也是由object类生成的,所以我们总结一下type和object的关系:

object类是由type类的实例,但是type类又继承了object类

晕死,那么我们可以先思考一个问题?这个世界上是先有鸡还是先有蛋?所以object和type的关系我们知道,但是谁先创建的,要解释这个就要关注元类

这里关于元类就不多说了,可以先学完元类再来思考

总结:

object是所有类的基类,type是实例化所有类的类,它们都是最顶级的,并且object是type类的实例,同时type继承了object类

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值