Python对象(Object)与类型(Type)的关系

news2024/9/27 23:30:48

Object与Type

    • 1、Object与Type概述
    • 2、Object与Type的关系


1、Object与Type概述


对象(Object)和类型(Type)是Python中两个最最基本的概念,它们是构筑Python语言大厦的基石

所有的数据类型,值,变量,函数,类,实例等一切可操作的基本单元在Python中都是对象(Object),每个对象都有三个基本属性:ID、类型和值

a = 1
print(id(a), type(a), a)    # 1958094307568 <class 'int'> 1

id()内建方法获取对象的唯一编号,它是一个整数,通常就是对象的内存地址。type()内置方法获取对象的类型(Type)

一个对象可能有一个或多个基类(Bases),当一个对象表示数据类型时,比如int对象,它就具有了__bases__属性

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

type和bases定义了该对象与其他对象间的关系,实际上对象内的type和bases均指向其他对象,是对其他对象的地址引用

一个对象必有Type属性,同样Type是不能脱离开对象存在的

type()内置方法获取对象的类型。我们也可以使用对象.__class__来获取对象的类型,它们是等价的

print(type(a))        # <class 'int'>
print(a.__class__)    # <class 'int'>

Class和Type均是指类型(Type),Class通常用于普通用户使用class自定义的类型。Type通常指Python的解释器CPython内置的类型

CPython提供内置方法type()而没有定义class(),因为它们本质是一样的,只是不同的语境产生的不同说法

2、Object与Type的关系


Python中的对象之间存在两种关系:

  • 1)父子关系或继承关系(Subclass-Superclass或Object-Oriented),如“猫”类继承自“哺乳动物”类,我们说猫是一种哺乳动物。对象的__bases__属性记录这种关系,可以使用issubclass()判断
  • 2)类型实例关系(Type-Instance),如“米老鼠是一只老鼠”,这里的米老鼠不再是抽象的类型,而是实实在在的一只老鼠。对象的__class__属性记录这种关系,可以使用isinstance()判断

Python把对象分为两类:类型对象(Type)和非类型对象(Non-type)

  • 1)int、type、list等均是类型对象,可以被继承,也可以被实例化
  • 2)1、[1]等均是非类型对象,它们不可再被继承和实例化,对象间可以根据所属类型进行各类操作,比如算数运算

object和type是CPython解释器内建对象,它们的地位非常特殊,是Python语言的顶层元素:

  • 1)object是所有其他对象的基类,object自身没有基类,它的数据类型被定义为type
  • 2)type继承了object,所有类型对象都是它的实例,包括它自身。判断一个对象是否为类型对象,就看它是否是type的实例

在这里插入图片描述

其中,实线表示继承关系,虚线表示实例关系

isinstance()内置方法本质是在判断对象的数据类型,它会向基类回溯,直至回溯到object

print(isinstance(object, type))      # True
print(isinstance(type, object))      # True
print(isinstance(type, type))        # True
print(isinstance(object, object))    # True
print(object.__class__)              # <class 'type'>
print(type.__class__)                # <class 'type'>

Python中还定义了一些常量,比如True、False。其中有两个常量None和NotImplemented比较特殊,通过type()可以获取它们的类型为NoneType和NotImplementedType,这两个类型不对外开放,即普通用户无法继承它们,它们只存在于CPython解释器中

print(type(None))                    # <class 'NoneType'>
print(type(NotImplemented))          # <class 'NotImplementedType'>

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

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

相关文章

[BUUCTF NewStarCTF 2023 公开赛道] week4 crypto/pwn

再补完这个就基本上完了. crypto RSA Variation II Schmidt-Samoa密码系统看上去很像RSA,其中Npqq, 给的eN给了d from secret import flag from Crypto.Util.number import *p getPrime(1024) q getPrime(1024)N p*p*qd inverse(N, (p-1)*(q-1)//GCD(p-1, q-1))m bytes…

cause: java.lang.numberformatexception: for input string

一个十分粗心的错误 我本来想要写的是name不为空&#xff0c;并且不为空字符串&#xff0c;结果不小心写成了空格&#xff01; 解决方案&#xff1a;将空格改为空字符串即可

JMeter的使用——傻瓜式学习【中】

目录 前言 1、JMeter参数化 1.1、什么是参数化 1.2、用户定义的变量 1.2.1、什么时候使用用户定义的变量 1.2.2、使用“用户定义的变量”进行参数化的步骤&#xff1a; 1.2.3、案例 1.3、用户参数 1.3.1、什么时候使用用户参数&#xff1f; 1.3.2、使用“用户参数”进…

交叉编译工具链(以STM32MP1为例)

1.什么是交叉编译工具链&#xff1f; 在一个系统上进行编译&#xff0c;在另一个系统上进行执行 2.STM32MP1交叉编译工具链 3.交叉编译器内容 4.两种工具链模式 5.两种链接模式 6.工具使用 注意&#xff1a;OpenSTLinux已经提供了编译框架&#xff0c;不需要命令行手工编译 …

Spring Cloud 实战 | 解密Feign底层原理,包含实战源码

专栏集锦&#xff0c;大佬们可以收藏以备不时之需 Spring Cloud实战专栏&#xff1a;https://blog.csdn.net/superdangbo/category_9270827.html Python 实战专栏&#xff1a;https://blog.csdn.net/superdangbo/category_9271194.html Logback 详解专栏&#xff1a;https:/…

在VM虚拟机上安装centos并了解Linux常用命令

一. centos安装 新建一个虚拟机&#xff0c;使用ISO映像文件&#xff08;在浏览器上直接搜索阿里云镜像站&#xff0c;下载合适的镜像文件&#xff09; 安装后设置密码然后重启 重启后输入账号和密码 查看IP 输入命令&#xff1a; vi ifcfg-ens33&#xff0c;进入编辑界面&a…

物联网AI MicroPython传感器学习 之 PAJ7620手势识别传感器

学物联网&#xff0c;来万物简单IoT物联网&#xff01;&#xff01; 一、产品简介 手势识别传感器PAJ7620u2是一款集成3D手势识别和运动跟踪为一体的交互式传感器&#xff0c;传感器可以在有效范围内识别手指的顺时针/逆时针转动方向和手指的运动方向等。它可以识别13种手势&a…

STM32的RTC模块的难点推导

在 S T M 32 STM32 STM32的 R e a l t i m e c l o c k , R T C Real\quad time\quad clock,RTC Realtimeclock,RTC模块中有一些功能点不太好理解&#xff0c;下面我根据我自己对这些功能难点的理解来做一些推导并记录如下。 首先来看一下平滑数字校准。假设我们目前的 R …

万字解析设计模式之原型模式与建造者模式

一、原型模式 1.1概述 原型模式是一种创建型设计模式&#xff0c;其目的是使用已有对象作为原型来创建新的对象。原型模式的核心是克隆&#xff0c;即通过复制已有对象来创建新对象&#xff0c;而不是通过创建新对象的过程中独立地分配和初始化所有需要的资源。这种方式可以节…

CMT2310A一款低功耗高性能Sub-1GHz射频收发器芯片

CMT2310A是一款超低功耗,高性能&#xff0c;适用于各种113至960 MHz无线应用的00K&#xff0c;(G)FSK 和4(G)FSK 射频收发器。它是CMOSTEK NextGenRFTM 射频产品线的一部分&#xff0c;这条产品线包含完整的发射器&#xff0c;接收器和收发器。CMT2310A的高集成度&#xff0c;简…

npm package.json属性详解

npm package.json属性详解 概述 package.json必须是一个严格的json文件&#xff0c;而不仅仅是js里边的一个对象。其中很多属性可以通过npm-config来生成 name package.json中最重要的属性是name和version两个属性&#xff0c;这两个属性是必须要有的&#xff0c;否则模块就…

【机器学习(二) 线性代数基础I(Linear Algebra Foundations)】

机器学习&#xff08;二&#xff09; 线性代数基础I&#xff08;Linear Algebra Foundations) 这一节主要介绍一些线性代数的基础。 目录 机器学习&#xff08;二&#xff09; 线性代数基础I&#xff08;Linear Algebra Foundations)1. 向量 Vectors2. 复杂度 Complexity3.线…

基于3D点云的语义分割模型调研(最新更新2023.10.30)

文章目录 3D点云分割数据集点云模型的评价指标3D点云语义分割方法发展PointSIFT模型的效果 https://blog.csdn.net/toCVer/article/details/126265782 基于深度学习的三维点云分割综述 3D点云分割数据集 传统的点云分割方法包括基于边缘检测的方法、基于区域增长的算法、基于特…

【Linux】:Linux开发工具之Linux编辑器vim的使用

&#x1f52b;1.Linux编辑器-vim使用 &#x1f4e4; vi/vim的区别简单点来说&#xff0c;它们都是多模式编辑器&#xff0c;不同的是vim是vi的升级版本&#xff0c;它不仅兼容vi的所有指令&#xff0c;而且还有一些新的特性在里面。例如语法加亮&#xff0c;可视化操作不仅可以…

deepsort算法 卡尔曼滤波 匈牙利算法

目标追踪最核心的两个算法就是卡尔曼滤波和匈牙利算法算法。 卡尔曼滤波&#xff1a;根据当前帧中的轨迹预测下一帧的轨迹。匈牙利算法:将预测的目标位置与检测到的目标位置进行匹配&#xff0c;实现对目标的准确跟踪。Sort算法 Sort算法分为以下几个步骤&#xff1a; 1.卡尔曼…

AS/400-物理文件-02

物理文件 - Physical file Physical file物理文件中的条目级别相关命令 Physical file 简介物理文件 这是一个文件。包含预定义的结构化格式的数据。它是PF类型。通过使用CRTPF命令创建PF。PF中包含的字段的最大数量为8000。最多包含120个关键字段。 PF 的结构如下 TYPE SPECIF…

【C++】多态 ⑥ ( 函数重定义涉及的问题 - 子类覆盖父类函数名 )

文章目录 一、函数重定义涉及的问题1、执行出错的代码2、代码分析3、错误原因分析 - 函数重定义问题 : 子类覆盖父类函数名4、正确调用函数的方法 一、函数重定义涉及的问题 1、执行出错的代码 错误代码示例 : #include "iostream" using namespace std;// 父类 cla…

Openssl数据安全传输平台014:OCCI环境搭建和使用:Centos8-Oracle19c代码跑通 + Window代码没跑通(不影响本项目)

文章目录 0 代码仓库1 启动Centos oracle数据库2 Winsows安装配置OCCI库2.1 下载文件2.2 VS 配置2.2.1 VC包含目录2.2.2 VC库目录2.2.3 连接器-附加依赖项2.2.4 代码测试-Oracle11g2.2.4.1 准备2.2.4.2 代码测试 3 Centos安装配置occi库3.0 强调3.1 下载instantclient库文件压缩…

国产思仪 1765A/B/C/D/E程控直流电源

1765A/B/C/D/E程控直流电源 产品综述 1765系列程控直流电源主要用于储能设备系统的测量分析和自动测试系统的加电测试。作为一种双象限直流电源&#xff0c;将电源输出和功率吸收的功能完全集成到单一系统中&#xff0c;可实现电源与负载功能的无缝转换&#xff0c;解决双向能源…

RT-Thread 内存管理(一)

内存管理 在计算系统中&#xff0c;通常存储空间可以分为两种&#xff1a;内部存储空间和外部存储空间。 内部存储空间通常访问速度比较快&#xff0c;能够按照变量地址随机访问&#xff0c;也就是我们通常所说的RAM&#xff08;随机访问存储器&#xff09;&#xff0c;可以把…