判断对象的类型? [复制]

2023-11-22

有没有一种简单的方法来确定变量是列表、字典还是其他变量?


有两个内置函数可以帮助您识别对象的类型。您可以使用type()如果您需要对象的确切类型,并且isinstance() to check对象的类型针对某物。通常,您想使用isinstance()大多数时候,因为它非常健壮并且还支持类型继承。


要获取对象的实际类型,可以使用内置的type()功能。将对象作为唯一参数传递将返回该对象的类型对象:

>>> type([]) is list
True
>>> type({}) is dict
True
>>> type('') is str
True
>>> type(0) is int
True

这当然也适用于自定义类型:

>>> class Test1 (object):
        pass
>>> class Test2 (Test1):
        pass
>>> a = Test1()
>>> b = Test2()
>>> type(a) is Test1
True
>>> type(b) is Test2
True

注意type()只会返回对象的直接类型,但无法告诉您有关类型继承的信息。

>>> type(b) is Test1
False

为了解决这个问题,您应该使用isinstance功能。这当然也适用于内置类型:

>>> isinstance(b, Test1)
True
>>> isinstance(b, Test2)
True
>>> isinstance(a, Test1)
True
>>> isinstance(a, Test2)
False
>>> isinstance([], list)
True
>>> isinstance({}, dict)
True

isinstance()通常是确保对象类型的首选方法,因为它也接受派生类型。因此,除非您确实需要类型对象(无论出于何种原因),否则使用isinstance()优先于type().

第二个参数为isinstance()还接受类型元组,因此可以一次检查多种类型。isinstance如果对象属于以下任何类型,则返回 true:

>>> isinstance([], (tuple, list, set))
True
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

判断对象的类型? [复制] 的相关文章

  • 如何在刻度标签和轴之间添加空间

    我已成功增加刻度标签的字体 但现在它们距离轴太近了 我想在刻度标签和轴之间添加一点呼吸空间 如果您不想全局更改间距 通过编辑 rcParams 并且想要更简洁的方法 请尝试以下操作 ax tick params axis both whic
  • InterfaceError:连接已关闭(使用 django + celery + Scrapy)

    当我在 Celery 任务中使用 Scrapy 解析函数 有时可能需要 10 分钟 时 我得到了这个信息 我用 姜戈 1 6 5 django celery 3 1 16 芹菜 3 1 16 psycopg2 2 5 5 我也使用了psyc
  • 将字符串转换为带有毫秒和时区的日期时间 - Python

    我有以下 python 片段 from datetime import datetime timestamp 05 Jan 2015 17 47 59 000 0800 datetime object datetime strptime t
  • DreamPie 不适用于 Python 3.2

    我最喜欢的 Python shell 是DreamPie http dreampie sourceforge net 我想将它与 Python 3 2 一起使用 我使用了 添加解释器 DreamPie 应用程序并添加了 Python 3 2
  • 导入错误:没有名为 _ssl 的模块

    带 Python 2 7 的 Ubuntu Maverick 我不知道如何解决以下导入错误 gt gt gt import ssl Traceback most recent call last File
  • 更改自动插入 tkinter 小部件的文本颜色

    我有一个文本框小部件 其中插入了三条消息 一条是开始消息 一条是结束消息 一条是在 单位 被摧毁时发出警报的消息 我希望开始和结束消息是黑色的 但被毁坏的消息 参见我在代码中评论的位置 插入小部件时颜色为红色 我不太确定如何去做这件事 我看
  • 如何等到 Excel 计算公式后再继续 win32com

    我有一个 win32com Python 脚本 它将多个 Excel 文件合并到电子表格中并将其另存为 PDF 现在的工作原理是输出几乎都是 NAME 因为文件是在计算 Excel 文件内容之前输出的 这可能需要一分钟 如何强制工作簿计算值
  • 为 pandas 数据透视表中的每个值列定义 aggfunc

    试图生成具有多个 值 列的数据透视表 我知道我可以使用 aggfunc 按照我想要的方式聚合值 但是如果我不想对两列求和或求平均值 而是想要一列的总和 同时求另一列的平均值 该怎么办 那么使用 pandas 可以做到这一点吗 df pd D
  • __del__ 真的是析构函数吗?

    我主要用 C 做事情 其中 析构函数方法实际上是为了销毁所获取的资源 最近我开始使用python 这真的很有趣而且很棒 我开始了解到它有像java一样的GC 因此 没有过分强调对象所有权 构造和销毁 据我所知 init 方法对我来说在 py
  • 从列表中的数据框列中搜索部分字符串匹配 - Pandas - Python

    我有一个清单 things A1 B2 C3 我有一个 pandas 数据框 其中有一列包含用分号分隔的值 某些行将包含与上面列表中的一项的匹配 它不会是完美的匹配 因为它在其中包含字符串的其他部分 该列 例如 该列中的一行可能有 哇 这里
  • 使用 Pycharm 在 Windows 下启动应用程序时出现 UnicodeDecodeError

    问题是当我尝试启动应用程序 app py 时 我收到以下错误 UnicodeDecodeError utf 8 编解码器无法解码位置 5 中的字节 0xb3 起始字节无效 整个文件app py coding utf 8 from flask
  • IRichBolt 在storm-1.0.0 和 pyleus-0.3.0 上运行拓扑时出错

    我正在运行风暴拓扑 pyleus verbose local xyz topology jar using storm 1 0 0 pyleus 0 3 0 centos 6 6并得到错误 线程 main java lang NoClass
  • 表达式中的 Python 'in' 关键字与 for 循环中的比较 [重复]

    这个问题在这里已经有答案了 我明白什么是in运算符在此代码中执行的操作 some list 1 2 3 4 5 print 2 in some list 我也明白i将采用此代码中列表的每个值 for i in 1 2 3 4 5 print
  • HTTPS 代理不适用于 Python 的 requests 模块

    我对 Python 还很陌生 我一直在使用他们的 requests 模块作为 PHP 的 cURL 库的替代品 我的代码如下 import requests import json import os import urllib impor
  • ExpectedFailure 被计为错误而不是通过

    我在用着expectedFailure因为有一个我想记录的错误 我现在无法修复 但想将来再回来解决 我的理解expectedFailure是它会将测试计为通过 但在摘要中表示预期失败的数量为 x 类似于它如何处理跳过的 tets 但是 当我
  • Nuitka 未使用 nuitka --recurse-all hello.py [错误] 编译 exe

    我正在尝试通过 nuitka 创建一个简单的 exe 这样我就可以在我的笔记本电脑上运行它 而无需安装 Python 我在 Windows 10 上并使用 Anaconda Python 3 我输入 nuitka recurse all h
  • 用于运行可执行文件的python多线程进程

    我正在尝试将一个在 Windows 上运行可执行文件并管理文本输出文件的 python 脚本升级到使用多线程进程的版本 以便我可以利用多个核心 我有四个独立版本的可执行文件 每个线程都知道要访问它们 这部分工作正常 我遇到问题的地方是当它们
  • Python - 字典和列表相交

    给定以下数据结构 找出这两种数据结构共有的交集键的最有效方法是什么 dict1 2A 3A 4B list1 2A 4B Expected output 2A 4B 如果这也能产生更快的输出 我可以将列表 不是 dict1 组织到任何其他数
  • Pandas 与 Numpy 数据帧

    看这几行代码 df2 df copy df2 1 df 1 df 1 values 1 df2 ix 0 0 我们的教练说我们需要使用 values属性来访问底层的 numpy 数组 否则我们的代码将无法工作 我知道 pandas Data
  • PyAudio ErrNo 输入溢出 -9981

    我遇到了与用户相同的错误 Python 使用 Pyaudio 以 16000Hz 录制音频时出错 https stackoverflow com questions 12994981 python error audio recording

随机推荐

  • Android的BaseAdapter是适配器模式的一个例子吗?

    Android 类 BaseAdapter 的名称中包含 Adapter 是因为它遵循 Adapter 模式还是只是巧合 来自维基百科 在计算机编程中 适配器模式 通常称为 包装器模式或简称为包装器 是一种设计模式 将类的一个接口转换为兼容
  • com_error: (-2147352567, '发生异常。', (0, 无, 无, 无, 0, -2147024809), 无)

    从 Excel 工作表生成 pdf 时 我收到以下错误 ws ExportAsFixedFormat 0 save as File
  • 在 Python 中使用对象 id 作为对象的哈希值

    使用该对象是否明智id作为哈希键 通过 hash 能够为程序的单个实例对可变对象进行哈希处理 使用对象属性会更好 但它们都是可变的并且可以更改 我在看时想到了这一点实例集我想知道这是否明智 是的 只要您还定义 eq 并且大概 ne 与此一致
  • 并行流非并发无序收集器

    假设我有这个自定义收集器 public class CustomToListCollector
  • WPF:如何从 Fonts.SystemFontFamilies 中过滤掉非罗马字体?

    我知道如何使用几行 XAML 创建一个 WPF 字体选择器 绑定到Fonts SystemFontFamilies 感谢 Norris Cheng 的精彩博客文章 但我不知道如何过滤掉所有国际和其他非罗马字母字体系列 我的用户不太可能需要
  • Roxygen 真的可以像 Doxygen 对 C++ 那样记录 R 脚本(而不是包)吗?

    Roxygen 的灵感来自 C C 程序员使用的 Doxygen 文档系统 我使用过 Doxygen 我发现只要有 doxygen 注释 记录任何程序都非常容易 它还生成函数和类的调用图 我认为 roxygen 会以同样的方式工作 但是当我
  • Grails sql 查询

    想象一下我有这样的东西 def example def temp ConferenceUser findAllByUser User get session user temp temp 解释我的问题 虽然动态查找器非常易于使用且学习速度很
  • 如何在Python中获取文本字符串的视觉长度

    如同这个问题 我不是问如何查找字符串中的字符数 我想确定渲染时字符串的视觉长度或将其与另一个字符串进行比较 例如 iiii 和 WWWW 都有四个字符 然而 iiii 在视觉上更短 我知道这是由字体决定的 并且我不使用等宽字体 因此 为了解
  • 如何修改运行时加载的 DLL 的导入地址表

    我想挂钩在运行时从加载的 DLL 调用的函数 我使用了 Windows Via C C 一书中的 CAPIHook 类 DLL 注入由 Install System Wide hook 完成 The hooking 由修改 IAT 完成 但
  • 如何填充 UIView 的背景图片

    我有一个UIView我这样设置背景图片 self view backgroundColor UIColor colorWithPatternImage UIImage imageNamed sfond appz png 我的问题是背面图像不
  • 从技术上讲,是否可以通过编程方式截取网站的屏幕截图?

    您认为以编程方式截取网站的屏幕截图在技术上可行吗 我想制作一个计划的 Python 任务来抓取网站列表并截取它们的主页屏幕截图 您认为技术上可行吗 或者您是否知道提供此类服务的第三方网站 Input url gt Output screen
  • “借用的数据不能存储在其封闭之外”是什么意思?

    编译以下代码时 fn main let mut fields Vec new let pusher mut a str fields push a 编译器给我以下错误 error borrowed data cannot be stored
  • python-docx:将表解析为 Pandas Dataframe

    我正在使用python docx用于提取 MS Word 文档的库 我可以使用同一个库从Word文档中获取所有表格 但是 我想将表解析为 panda 数据框架 是否有任何内置功能可以用来将表解析为数据框架 或者我必须手动执行此操作 另外 是
  • 如何处理同构呈现形式的早期输入

    我有一个 React 应用程序 其中包含一个表单 该表单在服务器端呈现 并预先填充了用户正在进行的工作 问题是 如果用户在应用程序加载之前编辑表单中的值 则应用程序不会意识到更改 当用户保存时 服务器呈现的未更改的数据将被重新保存 并且用户
  • EventSource:总是出现错误

    首先EventSourceAPI 我写了最学术的例子 问题是我总是遇到错误 而且找不到任何有用的信息 当我加载时home html JS脚本停止于source onerror 我将其打印到控制台 但分析对象时我找不到任何错误类型或消息 所以
  • Laravel:vue 组件未渲染

    尽管遵循了以下教程 但我的 vue 组件并未在页面上呈现 我有以下布局 master blade php
  • 如何导航到父活动

    好吧 当我在做某事并且我需要在我的应用程序中配置操作栏时 我从http developer android com我找到了我要找的东西 public boolean onOptionsItemSelected MenuItem item s
  • geom_bar 的 gganimate 问题?

    自从 David Robinson 发布了他的 gganimate 包以来 我一直怀着羡慕和钦佩的心情看着 Twitter 上出现的各种 ggplot 动画 并认为我自己也可以玩一玩 我在使用 geom bar 时遇到 gganimate
  • firefox @font-face 因 fontawesome 失败

    我在运行的 OSS 应用程序上使用 FontAwesome 字体 但我似乎无法通过 Firefox 的字体清理程序 这些文件都在同一个域中提供 路径是正确的 我使用的是 FontAwesome 的官方 css 当通过其网站和本地文档提供时
  • 判断对象的类型? [复制]

    这个问题在这里已经有答案了 有没有一种简单的方法来确定变量是列表 字典还是其他变量 有两个内置函数可以帮助您识别对象的类型 您可以使用type 如果您需要对象的确切类型 并且isinstance to check对象的类型针对某物 通常 您