当前位置: 首页 > 面试题库 >

Python-确定对象的类型?

缪成天
2023-03-14
问题内容

有没有一种简单的方法来确定变量是列表,字典还是其他?我回来的对象可能是任何一种类型,我需要能够分辨出两者之间的区别。


问题答案:

有两个内置函数可以帮助你识别对象的类型。你可以使用type(),如果你需要一个对象的确切类型,并isinstance()以检查对象的反对的东西类型。通常,你希望使用isistance()大多数时间,因为它非常健壮并且还支持类型继承。

要获取对象的实际类型,请使用内置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()优先于type()

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

>>> isinstance([], (tuple, list, set))
True


 类似资料:
  • 我将使用 python 作为我正在寻找的示例(如果您不了解 Python,您可以将其视为伪代码): 我知道在红宝石中我可以做到: 但这是确定对象类型的正确方法吗?

  • 问题内容: 如果class 和class 扩展了class 并且我有一个对象类型或,我如何确定它是实例的哪种类型? 问题答案:

  • 问题内容: 尝试将类类型的对象添加到 JArray时 遇到以下错误。 这是我正在使用的代码: 在运行程序时,我将其命名如下: 如何转换 _JArray(JArray) 内的 AmountModel(类) 以被系统识别为JSON对象? 非常感谢您的回答。 谢谢。 问题答案: 为了将任意非原始POCO添加到中,您必须使用以下重载之一显式序列化它: (另请注意,我已更正了循环中的结束条件。它是,导致出现

  • 问题内容: 我有三个类(,和),它们扩展了另一个类()。如何判断对象属于哪个子类?到目前为止,我有一个具有类名称的属性,但是我认为可以使用类似于javascript的typeof的运算符。(类似:) 问题答案: 您可以使用关键字。 但是请注意,需要使用它通常是不良设计的标志。通常,您应该在每个派生类中编写方法覆盖,以便您无需显式地检查是哪个类。

  • 问题内容: 在C中,我们可以找到的大小int,char等我想知道如何获得物体的大小就像一个字符串,整数,等在Python。 相关问题:Python列表(元组)中每个元素有多少个字节? 我使用的XML文件包含指定值大小的大小字段。我必须解析此XML并进行编码。当我想更改特定字段的值时,我将检查该值的大小字段。在这里,我想比较输入的新值是否与XML中的值相同。我需要检查新值的大小。如果是字符串,我可以

  • 第2章和第3章 有关对象的思考 一节完成了电梯模拟程序面向对象设计的前两步,即确定实现电梯模拟程序的类和这些类的属性。 本节要确定实现电梯模拟程序所需的类行为。第5章将介绍这些类对象之间的交互。 下面要考虑一些实际类对象的行为。收音机的行为包括可以选台和设置音量。汽车的行为包括加速(按油门板)和减速(按制动闸)。 可以看出,对象通常不是自动做出行为,而是在向对象发出消息(message)时调用特定