python中type、class和object之间的关系

先来一段代码:

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

得出如下结论,1是int类型,而int是一个type类型,int本身也是一个对象,是由type这个类来生成的

所以关系如下:type ---> int ----> 1

int和str都是python中内置的类,那我们自己创建的类呢?

class Student:
    def __init__(self):
        pass


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

stu = Student()

print(type(stu))  # <class '__main__.Student'>
print(type(Student))  # <class 'type'>
print(int.__bases__)  # (<class 'object'>,)
print(str.__bases__)  #  (<class 'object'>,)
print(Student.__bases__) # (<class 'object'>,)
print(MyStudent.__bases__) # (<class '__main__.Student'>,)
print(type.__bases__)  # (<class 'object'>,)
print(object.__bases__)  # ()
print(type(object))  # <class 'type'>

得到这个结论:type ----> class ----> obj。

类是type类的实例对象。也就是说,不管是python中内置的int、str类,还是我们自己创建的Student类,它们都是type类的实例对象。

 

 

而MyStudent.__bases__得到结果是:(<class '__main__.Student'>,)

MyStudent是继承Student这个类的

所以有了这个概念 object类是最顶层的基类

而 type本身也是一个类,但是提示type也是一个对象

type的父类type.__bases__是object

而type(object)居然是<class 'type'> 这个说明了什么,

object是由type产生,但是type却是继承了object。

而object的基类是空,也就是说,object没有继承其他的类了。

 

看下面的一张图:

以分为三类:左边是type,中间是继承关系,最右边的是实例;
三者之间的关系
1、 object是type的一个实例。
2、 list str int dict tuple 所有类都是type的一个实例对象。
3、 object是所有类的基类,type也要继承object。
4、type是object的一个实例对象。
5、 type本身也是自己的一个实例对象。

可以看到任何元素都是对象(都是type的
实例对象),一切都继承object。

这就理解python中什么是一切皆对象,和其实现原理。

 

总结:

1、 python中一切皆对象,可以赋值给一个变量,可以添加到集合对象中,可以作为参数传递给函数,可以作为函数的返回值
2、一切皆对象,一切都是可以修改的

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

X-Programer

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值