Python面向对象你都会?元类了解一下

Python元类详解 Python从设计之初就是一门面向对象的语言,它有一个重要的概念,即一切皆对象。Python与java的区别:Java虽然也是面向对象编程的语言,但是血统没有Python纯正。比如Java的八种基本数据类型之一int,在持久化的时候,就需要包装成Integer类对象。但是在python中,一切皆对象。数字、字符串、元组、列表、字典、函数、方法、类、模块等等都是对象,包括你的代码。MetaClass元类,本质也是一个类,但和普通类的用法不同,它可以对类内部的定义(包括类属性和类方法)进行动态的修改。 阅读详情

Python面向对象你都会?元类了解一下

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

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

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

运行结果:

在上面的运行结果中我们可以看到自定义的类创建出来的对象,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%的用户所忧虑的东西具有更深的魔法。如果你犹豫考虑是否需要它们,那么实质上你不会需要它们 —— 蒂姆·彼得斯

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

关于元类就给大家简单的介绍到这里

如果大家对于学习Python有任何问题,学习方法,学习路线,如何学习有效率的问题,可以随时来咨询我,或者缺少系统学习资料的,我做这行年头比较久,自认为还是比较有经验的,可以帮助大家提出建设性建议,这是我的Python交流qun:785128166,有任何问题可以随时来咨询我。
 

【Python面向对象进阶⑥】——元类 Python属于动态类型的语言,而动态语言和静态语言最大的不同,就是函数和类的定义,不是编译时创建的,而是运行时动态创建的。 阅读详情

相关推荐

Python 的 object类、type元类

在C++,JAVA,C#等面向对象语言中, 类的实例 是 一个对象。 在Python中, 类的实例 是 一个对象,这个没有问题,object类是一切类的父类,这也没什么问题。 但是, type类有点元类的意思,我个人理解为 int,float,object , Animal等类 是 type元类的 一个实例(是一种类型)。 #一切皆对象 print(objec...

h a 6 6 6 c k 为 你解决复杂难题! 1900

python了解一下_Python面向对象你都会?元类了解一下!

一、万物皆对象在大家学习python的时候,一定听说过一句话:在我们python中万物皆对象,不管是整数、字符串、列表、字典这些基本数据类型,还是函数、以及自定义类创建出来的对象,在python中它们都是对象。如果我们想知道一个对象的类型,可以通过type函数来查看,type返回出来的就是创建这个对象的类。运行结果:在上面的运行结果中我们可以看到自定义的类创建出来的对象,type返回出来的就是我们...

weixin_42543309的博客 91

Unity 机械臂控制(二)——从碰撞检测到姿态解算:实现精准抓取

本文详细介绍了Unity中机械臂控制的实现方法,从碰撞检测到姿态解算,涵盖精准抓取的全流程。重点讲解了碰撞检测的分层处理、状态机设计、逆向运动学(IK)算法以及抓取稳定性优化等关键技术,并提供了实用的调试技巧和性能优化建议,帮助开发者实现高效的机械臂控制。

weixin_28693447的博客 304

python元类的应用_Python面向对象你都会?元类了解一下!

一、万物皆对象在大家学习python的时候,一定听说过一句话:在我们python中万物皆对象,不管是整数、字符串、列表、字典这些基本数据类型,还是函数、以及自定义类创建出来的对象,在python中它们都是对象。如果我们想知道一个对象的类型,可以通过type函数来查看,type返回出来的就是创建这个对象的类。运行结果:在上面的运行结果中我们可以看到自定义的类创建出来的对象,type返回出来的就是我们...

weixin_36356002的博客 159

FFmpeg HDR视频转SDR视频命令

之前蓝光盘电影多是AVC 1080p 8bit SDR格式视频,近两年4K电影流行,下载的蓝光电影多是HEVC 2160p 10bit HDR视频格式。 ffprobe查看有如下属性: # 10bit HDR Stream #0:0(eng): Video: hevc (Main 10), yuv420p10le(tv, bt2020nc/bt2020/smpte2084), 3840x2160 [SAR 1:1 DAR 16:9], 23.98 fps, 23.98 tbr, 1k tbn, 23.98

彼此当年少,莫负好时光 1万+

VS2103+Intel2013+MSMPI运行Fortran并行程序

VS2103+Intel2013+MSMPI运行Fortran并行程序MSMPI安装新建Fortran90项目编写Fortran并行程序在cmd运行编译完成的执行文件 MSMPI安装 我这里采用的是Microsoft MPI v9.0.1,可以点此下载。下载完成后同时安装msmpisdk.msi、msmpisetup.exe两个文件,安装位置默认即可。 其中msmpisdk.msi的默认安装路径在C:\Program Files (x86)\Microsoft SDKs\MPI,该文件包含了mpi环境所需

weixin_43176703的博客 2936

python 自定义数据类型_Python面向对象你都会?元类了解一下!

你这么优秀,一定只想把“柠檬班”置顶▲一、万物皆对象在大家学习python的时候,一定听说过一句话:在我们python中万物皆对象,不管是整数、字符串、列表、字典这些基本数据类型,还是函数、以及自定义类创建出来的对象,在python中它们都是对象。如果我们想知道一个对象的类型,可以通过type函数来查看,type返回出来的就是创建这个对象的类。运行结果:在上面的运行结果中我们可以看到自定...

weixin_40001395的博客 506

AVDepthData、LiDAR 深度数据与人像模式全解析:iOS 真实景深图采集与处理实战

在 iOS 高端影像系统中,真实景深信息的采集与利用已成为区分旗舰设备与基础设备的重要能力。Apple 自 iPhone 7 Plus 引入双摄虚化以来,逐步发展出基于 AVDepthData、TrueDepth 与 LiDAR 的多维深度感知技术,并开放接口供开发者获取高精度深度图,构建背景虚化、人像分割、3D 重建等多种功能。本文将深入解析 AVDepthData 的结构与使用方式,系统讲解 LiDAR 采集架构、人像模式的景深融合逻辑,以及如何在实际项目中采集、预览并处理深度图数据,实现具备工程可用性

努力分享一些人工智能、计算机视觉、影像等相关的知识干货! 1863

python面向对象之元类

python面向对象之元类 什么是元类(metaclass)? type是内置的元类 用class关键字定义的所有的类都是由内置的元类type实现的 所有内置的类也都是由内置的元类type实现的 #!/usr/bin/env python3 # -*- coding:utf-8 -*- class Person: def __init__(self, name: str, pid: int): self.name = name self.id = pid def info(self):

chaney的博客 2万+

Dify基础:Dify平台的本地化部署(含windows部署中,常见问题及解决方案)

第一种比较简单,只需要在浏览器中,打入https://dify.ai/就可以。这个指令虽然看起来简单,但实际上涉及到对docker的使用。这个项目既然有github地址,那它一般就是开源的。我们点开这个github地址,便能看到dify的私有化部署方式。我们可以看到,还是上面那个图,有个按钮,是指向该项目的Github地址的。第二步:按照dify的github给出的指令,对dify进行安装。第一步:我们把dify下载到自己的电脑(或者服务器)上。这里,我们只考虑第二种方式,也就是私有化部署。

xiezhipu的博客 1万+

015、架构_配置文件_管理节点(proxymanager.ini)

该配置文件中的参数在后台配置,两种生效方式:*所有参数重启生效。*部分参数可以使用工具dbtool动态生效。动态生效命令为:dbtool-pm-load-config。配置文件“proxymanager.ini”用于设置元数据管理模块的信息。文件路径为“~/etc”。配置文件“proxymanager.ini”是普通的文本文件。默认值proxymanager-alarmconfutf8.txt。配置错误或不配置,PM无法连接MDS,无法服务。获取元数据失败超时处理时间。异常时请求启动对等回滚。

Oracle/MySQL 到 国产信创数据库|迁移 · 调优 · 信创替换 328

[Python学习日记-70] 元类

在上一篇章当中我们已经了解了面向对象的各种内置函数了,本篇我们将讲述“元类”,它是 Python 面向对象编程的深层次知识,学会了元类可以做到很多神奇的姿势,这次就带大家一起来探讨一下什么是元类,我们应该如何定制自己的元类,我们应该怎么调用我们自己的元类。

JovaZou的成长之路 1209

大模型之Spring AI实战系列(一):基础认知篇 - 开启智能应用开发之旅

Spring AI 是一个轻量级开源框架,旨在简化 AI 模型在企业级 Java 应用中的集成与管理。它提供了跨多个 AI 服务提供商的便携式 API,支持聊天、文本转图像、嵌入式模型等多种功能,并兼容主流的 AI 模型提供商如 OpenAI、Google 等。Spring AI 的核心功能包括结构化输出、向量数据库支持、工具/函数调用、可观察性、文档摄取 ETL 框架、AI 模型评估等。

寻道AI,探索AI无限可能! 6359

python面向对象:元类

元类是类的类,是类的模板元类是用来控制如何创建类的,正如类是创建对象的模板一样,而元类的主要目的是为了控制类的创建行为元类的实例化的结果为我们用class定义的类,正如类的实例为对象(f1对象是Foo类的一个实例,Foo类是type类的一个实例)type是python的内建元类,用来直接控制生成类,python中任何class定义的类其实都是type类实例化的对象1。

liudefang的专栏 864

软件设计师高频考点—套路题

学习交流的总结

秩沅 2539

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

Python中的元类

Python中的元类 Python一切皆对象,所以类也是对象。 我们知道,对象是通过类实例化创建出来的。但我们创建类时并没有进行实例化操作,为什么类也是对象呢? 类既然是对象,类肯定是另外某个类的实例。这说明在我们使用class声明一个类的时候Python解释器为我们做了些什么。 一、元类介绍 通过一个类,可以创建无数个实例对象,类就相当于一个生产实例对象的机器,可以不断的生产出实例对象...

weixin_43790276的博客 3914

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

python——元类、元类实现orm

元类 1. 类也是对象 在大多数编程语言中,类就是一组用来描述如何生成一个对象的代码段。在Python中这一点仍然成立: >>> class ObjectCreator(object): … pass … >>> my_object = ObjectCreator() >>> print(my_object) <__main_...

GC 6793

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

Python 元类

元类是“类的类”,它用于定义类的行为。换句话说,元类是创建类的模板。在 Python 中,类本身也是对象。元类用于控制类的创建过程,比如类的属性、方法、继承关系等。

weixin_67459449的博客 1472

Python 中的元类是什么

元类是创建类的“东西”。你定义类是为了创建对象,对吧?但我们了解到 Python 中的类也是对象。那么,元类就是创建这些对象的东西。你已经看到type这是因为type函数实际上是一个元类。type是 Python 在幕后用来创建所有类的元类。现在你可能会想,“为什么它是小写的,而不是Type?嗯,我想这是为了与str(创建字符串对象的类)和int保持一致。在 Python 中,一切,我是说一切,都是对象。这包括整数、字符串、函数和类。所有这些都是对象。那么,任何__class__的。

liluo0815481的博客 990

python元类_Python元类

python元类Welcome to today’s tutorial on python metaclass. We all know that python is an object oriented programming language which means it binds datas with functionalities i.e. class. Before starting...

从零开始的教程世界 211

python学习(7)之面向对象(类,面向对象特性,元类,单例模式)

本文主要讲解了python关于类的相关问题和属性,从底层进行讲解

cjh6215的博客 1014

python的元类以及应用,元类实现ORM

使用ORM可以方便的进行关系型数据库库操作,减少开发负担。要实现ORM的重点,就是如何把类和实例与关系型数据库进行映射。python的元类,可以在拦截和修改类的创建,因此可以通过元类,在类的定义时,进行映射。回到最初的问题:ORM一定要用元类来实现吗?通过上述的内容可以得知,只要能够完成映射,就不一定需要用元类。后续会展示不使用元类实现的ORM。

weixin_68789096的博客 1014

python 面向对象之多态及元类

文章目录python 面向对象之多态及元类多态元类 python 面向对象之多态及元类 多态 多态首先是建立在继承的基础上的,先有继承才能有多态。 多态是指不同的子类在继承父类后分别都重写覆盖了父类的方法,即父类同一个方法,在继承的子类中表现出不同的形式。 多态成立的另一个条件是在创建子类时候必须使用父类new子类的方式 元类 类也是对象,可以在运行时动态的创建。 对于动态的创建类,可以使用type,它可以接受一个类的描述作为参数,然后返回一个类。 type还可以创建带有属性的类,可以接受一个字典来为

qq_43729094的博客 179
上一篇: Python之Request库踩坑之路
下一篇: Web UI自动化测试系统设计
测试小小小
博客等级 码龄6年 265粉丝 364原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值