您的位置:首页 > 编程语言 > Python开发

python中 type object class之间的关系

2018-11-23 23:39 423 查看

关于type的理解

大家都知道,type是用来返回对象类型的,数字100是int类型,"hi"是str类型。

type(100)
#<class 'int'>
type("hi")
#<class 'str'>

那么int和str是什么类型呢?惊奇的发现,int和str都是type类型。

type(int)
#<class 'type'>
type(str)
#<class 'type'>

int和str都是python中内置的类,那我们自己创建的类呢?stu是Student类型,这个没问题。但是,Student居然也是type类型的。
所以,我们可以得出结论:类是type类的实例对象。也就是说,不管是python中内置的int、str类,还是我们自己创建的Student类,它们都是type类的实例对象。

class Student():
def __init__(self):
pass

stu = Student()
print(type(stu)) #<class '__main__.Student'>
print(type(Student)) #<class 'type'>

关于object的理解

我们知道,所有类都继承于object。

print(int.__bases__)
#(<class 'object'>,)
print(Student.__bases__)
#(<class 'object'>,)

既然所有类都继承于object,那type类自然也继承于object了。而object的基类是空,也就是说,object没有继承其他的类了。

print(type.__bases__)
#(<class 'object'>,)
print(object.__bases__)
#()

最后,我们发现object也是type类型,也就是说,object也是type的实例对象。

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

总结

看到这里,相信很多盆友已经晕了。
其实。。。用一句话概括就是这样:一切类都是type的实例 ,一切都继承object类
用图描述就是这样:

(图片来自波比老师)

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: