【Python】一文学会面向对象?当然可以的


前言

在大家学习python的时候,一定听说过一句话:

在我们python中万物皆对象,不管是整数、字符串、列表、字典这些基本数据类型,还是函数、以及自定义类创建出来的对象,在python中它们都是对象。

如果我们想知道一个对象的类型,可以通过type函数来查看,type返回出来的就是创建这个对象的类。

一、万物皆对象

示例:pandas 是基于NumPy 的一种工具,该工具是为了解决数据分析任务而创建的。

图片

运行结果:

图片

在上面的运行结果中我们可以看到自定义的类创建出来的对象,type返回出来的就是我们自定义的这个类(__main__代表的是当前这个模块)。

type(10)返回的结果是int,也就是说10是int这个类创建出来的,自定义的函数func是function这个类创建出来的。

我们可以看一下int的源码中可以看到,它就是一个类,不仅如此,python的基本数据类型,每一个类型都是一个类。

图片

function的源码,同样也是一个类。

图片

二、类也是对象

在上面我们知道了python中所有的内置数据类型,以及函数都是由类创建出来的,那么这个时候肯定会由疑问。

问题一:对象是由类创建出来的,那么类是不是对象?类又是由什么创建出来的?

python中万物皆对象,当然也包括类,类也是对象,至于类是由什么创建出来的,我们可以通过type函数来看一下


在这里插入图片描述
在上面的结果中我们可以看到:

◆ obj_t,是由TestClass这个类创建出来的

◆ 而TestClass,使用 type创建出来的

问题二:type查看类的类型返回出来的是type,type不是个内置函数吗?

正如上面的结果所示,你没看错,类的类型是type。

类就是由type创建出来的,type虽然我们把它叫做python的内置函数,但其实它是一个类,我们一起来看一下它的源码。
在这里插入图片描述

在type的源码的文档注释中我们可以看到,type不仅可以用来查看对象的类型,它还可以用来创建一个新的类。

到这里,我们明确的知道了类也是对象,类是由type这个类创建出来的对象,那么type是由什么创建出来的呢?

问题三:类是由type创建出来的,那么type这个类呢,它是什么类型?

在这里插入图片描述

在我们有一句话,能动手就绝不动口,实践出真知,这里我们可以动手通过代码来查看一下type到底是由什么创建出来的。
从上面的代码中我们可以看到,type是这个类也是type类型,就是说type也是type创建出来的。

到这里我们可以理一下思路,python中万物皆对象,所有的对象都是类创建的,而类又是由type创建的,那么type到底是什么呢?

三,元类

好了,也不跟大家卖关子了,type它究竟是什么呢?

type其实就是我们所说的元类,在python3中所有的类都是type这个元类创建出来的。

下面给大家来画个图来了解一下:
在这里插入图片描述

问题:元类到底有什么用?

元类比99%的用户所忧虑的东西具有更深的魔法。如果你犹豫考虑是否需要它们,那么实质上你不会需要它们 —— 蒂姆·彼得斯

(实际需要它们的人确信他们确实需要,并且不需要进行任何解释)。

总结

关于元类就给大家简单的介绍到这里,如果想更加深入的了解面向对象,以及更多元类相关的知识点和应用,请关注我们的测试开发课程。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

徐浪老师

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

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

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

打赏作者

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

抵扣说明:

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

余额充值