Python高级编程 type、object、class的区别 python中常见的内置类型 魔法函数

news2025/1/20 1:44:43

python中一切皆对象

代码块:

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

控制台输出:

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

也就是说在python中int类是由type类生成的,而数字1是由int类生成的。

代码块:

b = "abc"
print(type(b))
print(type(str))

控制台输出:

<class 'str'>
<class 'type'>

同理str类也是type类生成的 ,字符串"abc"是由str生成的。

class Student:
    pass

stu = Student()
print(type(stu))
print(type(Student))

输出为:

<class '__main__.Student'>
<class 'type'>

说明自定义Student类也是由type类生成的。

object类

obj类是所有类都继承的最顶层的类(基类)
注意:type也是一个类,同时type也是一个对象

print(type.__base__)
print(type(object))

输出:

<class 'object'>
<class 'type'>

也就是说type和object互为对方的指针,type类是object的实例化,object是type的继承。

在这里插入图片描述

对象的三个特征

  • 身份(id)
  • 类型

python中常见的内置类型

None(全局只有一个)

python解释器启动时会自动生成一个None对象(全局唯一一个)

a = None
b = None
print(id(a),id(b))
140717902960768 140717902960768

可以发现a和b二者的id是一样的,说明它们指向的是同一个地址,侧面证明了None类型是全局只有一个的类型。

数值类型

  • int
  • float
  • complex
  • bool

映射(dict)

对象会将 不可变的值 映射到任意对象。 映射属于可变对象。 目前仅有一种标准映射类型 字典

集合

  • set
  • frozenset

上下文管理器类型(with)

上下文管理器就是实现了上下文管理协议的对象。主要用于保存和恢复各种全局状态,关闭文件等,上下文管理器本身就是一种装饰器。

序列类型

  • list
  • bytes
  • range
  • tuple
  • str
  • array

其他

模块类型、class和实例、函数类型、方法类型、代码类型、object对象、type类型、type类型…

魔法函数

什么是魔法函数

python里定义的以双下划线开头和结尾的函数叫做魔法函数

class Company(object):
    def __init__(self,employee_list):
        self.employee = employee_list

    def __getitem__(self, item):
        return self.employee[item]

company = Company(['tom','bob','xiaoming'])
for i in company:
    print(i)
tom
bob
xiaoming

当for循环遍历company对象的时候,会自动去寻找构成这个对象的类中的__getitem__魔法函数

python中的数据模型以及数据模型对python语法的影响

数据模型其实就是魔法函数。因为我们定义了一些声明了它的定义的数据模型就会用神奇的功能。比如上文中__getitem__魔法函数 定义之后的类变成了一个可迭代对象。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/414681.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

SHELL函数可课后作业

一、题目 1、编写函数&#xff0c;实现打印绿色OK和红色FAILED 判断是否有参数&#xff0c;存在为Ok&#xff0c;不存在为FAILED 2、编写函数&#xff0c;实现判断是否无位置参数&#xff0c;如无参数&#xff0c;提示错误 3、编写函数实现两个数字做为参数&#xff0c;返回最…

Window中,Visual Studio 2022(C++)环境下安装OpenCV教程(不用Cmake版本)

Window中&#xff0c;Visual Studio 2022(C)环境下安装OpenCV教程 本教程主要为了方便小白安装C版本的OpenCV。 1. 第一步&#xff1a;下载官方OpenCV 下载后&#xff0c;在本地安装即可&#xff0c;注意记住安装路径&#xff0c;后续需要&#xff01; 2. 配置系统环境变量…

人口普查数据集独热编码转换

人口普查数据集独热编码转换 描述 在机器学习中&#xff0c;数据的表示方式对于模型算法的性能影响很大&#xff0c;寻找数据最佳表示的过程被称为“特征工程”&#xff0c;在实际应用中许多特征并非连续的数值&#xff0c;比如国籍、学历、性别、肤色等&#xff0c;这些特征…

中国版ChatGPT来了!快跟我一起申请文心一言吧

随着ChatGPT的快速进化吸引了全球网友的眼球 国内厂商也纷纷推出了相似的产品 其中百度推出的“文心一言”已经正式开始的相关的测试 很多人都在问 文心一言入口在哪&#xff1f; 文心一言邀请码在哪可以领&#xff1f; 文心一言怎么申请内测&#xff1f; 自从文心一言发…

手把手教你搭建自己本地的ChatGLM

前言 如果能够本地自己搭建一个ChatGPT的话&#xff0c;训练一个属于自己知识库体系的人工智能AI对话系统&#xff0c;那么能够高效的处理应对所属领域的专业知识&#xff0c;甚至加入职业思维的意识&#xff0c;训练出能够结合行业领域知识高效产出的AI。这必定是十分高效的生…

ChatGPT本地部署(支持中英文,超级好用)!

今天用了一个超级好用的Chatgpt模型——ChatGLM&#xff0c;可以很方便的本地部署&#xff0c;而且效果嘎嘎好&#xff0c;经测试&#xff0c;效果基本可以平替内测版的文心一言。 目录 一、什么是ChatGLM&#xff1f; 二、本地部署 2.1 模型下载 2.2 模型部署 2.3 模型运…

HCIE 第一天防火墙笔记整理

一、结合以下问题对当天内容进行总结 1. 什么是防火墙&#xff1f; 2. 状态防火墙工作原理&#xff1f; 二、复现上课俩个演示实验 一、结合以下问题对当天内容进行总结 1 什么是防火墙&#xff1f; 防火墙是一种隔离&#xff08;非授权用户和授权用户之间部署&#xff09;并过…

大数据学习完可以做什么

如果要推荐一种人人都能掌握的编程语言&#xff0c;应该没有比Python更合适的了。如果想学习大数据&#xff0c;可以选择从python语言入手~ Python 简单易学&#xff0c;用途广泛&#xff0c;不仅可以在日常办公中提高大家的职场效率&#xff0c;还能被大型互联网企业应用于后…

C++-c语言词法分析器

一、运行截图 对于 Test.c 的词法分析结果 对于词法分析器本身的源代码的分析结果 二、主要功能 经过不断的修正和测试代码&#xff0c;分析测试结果&#xff0c;该词法分析器主要实现了以下功能&#xff1a; 1. 识别关键字 实验要求&#xff1a;if else while do for main…

常见排序算法

目录 一、插入排序 1、直接插入排序 2、希尔排序(缩小增量插入排序&#xff09; 二、选择排序 三、堆排序 四、冒泡排序 五、快速排序&#xff08;递归&#xff09; 1、交换法 2、挖坑法 3、前后指针法&#xff08;推荐&#xff09; 4、快排再优化 六、快速排序&…

spring常用注解(全)

一、前言 Spring的一个核心功能是IOC&#xff0c;就是将Bean初始化加载到容器中&#xff0c;Bean是如何加载到容器的&#xff0c;可以使用Spring注解方式或者Spring XML配置方式。 Spring注解方式减少了配置文件内容&#xff0c;更加便于管理&#xff0c;并且使用注解可以大大…

Vue学习笔记(6. 组件之间传值)

1. 组件基本语法 (1) template (2) script (3) style 2. 父组件传值&#xff0c;子组件接值 (1) 父组件传值给子组件 (2) 子组件接收父组件的传值&#xff08;随时接收&#xff09; 子组件的值会随着父组件值的变更而变更。但是子组件变更&#xff0c;不会影响父组件的数据…

Jetson nano部署剪枝YOLOv8

目录前言一、YOLOv8模型剪枝训练1. Pretrain[option]1.1 项目的克隆1.2 数据集1.3 训练2. Constraint training3. Prune4. finetune二、YOLOv8模型剪枝部署1. 源码下载2. 环境配置2.1 trtexec环境变量设置3. ONNX导出3.1 Transpose节点的添加3.2 Resize节点解析的问题4. 运行4.…

【RabbitMQ学习日记】—— 发布确认与交换机

一、发布确认 1.1 发布确认的原理 生产者将信道设置成 confirm 模式&#xff0c;一旦信道进入 confirm 模式&#xff0c;所有在该信道上面发布的消息都将会被指派一个唯一的 ID(从 1 开始)&#xff0c;一旦消息被投递到所有匹配的队列之后&#xff0c;broker就会发送一个确认…

小白快速学习Markdown

这里写自定义目录标题欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题&#xff0c;有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注…

做好Python工程师,首先你需要做好的几件事

做好Python工程师&#xff0c;需要做好的几件事&#xff0c;我想分享给大家。首先千万不要做事周折。在你提问之前&#xff0c;先好好想一想&#xff0c;这个问题自己能不能解决。如果能解决&#xff0c;尽量自己解决&#xff1b;如果解决不了&#xff0c;那就要把你的问题描述…

大宗商品进口管理软件可以帮助企业解决哪些?

什么是大宗商品贸易&#xff1f;简单讲就是大宗商品在国际上自由流通。以贸易的形式&#xff0c;把商品从价格低的地方拉到价格高的地方出售。大宗商品是指可进入流通领域&#xff0c;可在工农业领域生产与消费使用的大批量买卖的。主要包括的类别有&#xff1a;能源商品、基础…

网络编程答疑融合连环tcp/nio/bio/redis/redisson/lettuce/netty/dubbo

如果有不对的地方, 欢迎在评论区指正: bio 1.1 请求-响应模型. 对于接收方, serverSocket.accept() 为每个请求(连接)安排一个线程 1.2浪费(阻塞占比大): socket.getInputStream().read()调用是阻塞的, 实际情况对于常见的web应用, 大家都是长连接, 同一时刻, 阻塞在此在线程会…

蓝牙技术|苹果获空间音频新专利,AirPods可动态调整声学输出

美国商标和专利局&#xff08;USPTO&#xff09;公示的清单显示&#xff0c;苹果在近日获得了一项名为“测定虚拟聆听环境”的新专利。据悉&#xff0c;该技术可以改善用户的聆听体验&#xff0c;增强空间音频的沉浸感&#xff0c;未来有望应用在AirPods上。 这项专利技术可以…

第二章 Linux目录结构

第二章 Linux目录结构linux的文件系统是采用级层式的树状目录结构&#xff0c;在此结构中的最上层是根目录“/”&#xff0c;然后在此目录下再创建其他的 目录。 2)深刻理解 linux 树状文件目录是非常重要的。3)记住一句经典的话:在Linux世界里&#xff0c;一切皆文件(!!)4)示意…