Python 中的 type() 和 isinstance() 示例

Python 中的 type() 是什么?

Python 有一个内置函数 type(),可以帮助您查找给定输入的变量的类类型。例如,如果输入是字符串,您将获得输出 ;对于列表,它将是 ,等等。

使用 type() 命令,您可以传递一个参数,返回值将是给定参数的类类型,例如:type(object)。

也可以向 type() 传递三个参数,即 type(name, bases, dict),在这种情况下,它将返回一个新的类型对象。

type() 的语法

type() 可以以两种方式使用,如下所示

 type(object)
type(namr, bases, dict)

参数:type(object)

  • object:这是一个必需的参数。如果这是传递给 type() 的唯一参数,则它将返回参数的类型。

参数:type(name, bases, dict)

  • name:类的名称。
  • bases:(可选)。这是一个可选参数,它是基类
  • dict:(可选)。这是一个可选参数,它是一个包含类定义的命名空间。

返回值

如果 object 是传递给 type() 的唯一参数,它将返回 object 的类型。

如果传递给 type() 的参数是 type(object, bases, dict),在这种情况下,它将返回一个新的对象类型。

type() 的示例

在此示例中,我们有一个字符串值、数字、浮点值、复数、列表、元组、字典和集合。我们将使用变量和类型来查看每个变量的输出。

str_list = "Welcome to Guru99"
age = 50
pi = 3.14
c_num = 3j+10
my_list = ["A", "B", "C", "D"]
my_tuple = ("A", "B", "C", "D")
my_dict = {"A":"a", "B":"b", "C":"c", "D":"d"}
my_set = {'A', 'B', 'C', 'D'}

print("The type is : ",type(str_list))
print("The type is : ",type(age))
print("The type is : ",type(pi))
print("The type is : ",type(c_num))
print("The type is : ",type(my_list))
print("The type is : ",type(my_tuple))
print("The type is : ",type(my_dict))
print("The type is : ",type(my_set))

输出

The type is :<class 'str'>
The type is :<class 'int'>
The type is :<class 'float'>
The type is :<class 'complex'>
The type is :<class 'list'>
The type is :<class 'tuple'>
The type is :<class 'dict'>
The type is :<class 'set'>

示例:对类对象使用 type()。

当您使用 type() 检查从类创建的对象时,它会返回类类型以及类名。在此示例中,我们将创建一个类并检查从类 test 创建的对象类型。

class test:
    s = 'testing'

t = test()
print(type(t))

输出

<class '__main__.test'>

示例:在 type() 中使用名称、基类和字典

也可以使用以下语法调用 type:type(name, bases, dict)。

传递给 type() 的三个参数,即 name、bases 和 dict,是构成类定义的组件。name 表示类名,bases 是基类,dict 是基类属性的字典。

在此示例中,我们将使用 type() 中的所有三个参数,即 name、bases 和 dict。

示例

class MyClass:
  x = 'Hello World'
  y = 50

t1 = type('NewClass', (MyClass,), dict(x='Hello World', y=50))
print(type(t1))
print(vars(t1))

输出

<class 'type'>
{'x': 'Hello World', 'y': 50, '__module__': '__main__', '__doc__': None}

当您将所有三个参数传递给 type() 时,它有助于您使用基类属性初始化新类。

Python 中的 isinstance() 是什么?

Python isinstance 是 Python 内置函数的一部分。Python isinstance() 接受两个参数,如果第一个参数是作为第二个参数给出的类信息(classinfo)的实例,则返回 true。

isinstance() 语法

isinstance(object, classtype)

参数

  • object:一个您正在与 classtype 比较的对象的实例。如果类型匹配,则返回 true,否则返回 false。
  • class type:一个类型或一个类或一个类型和/或类的元组。

返回值

如果 object 是 classtype 的实例,则返回 true,否则返回 false。

isinstance() 的示例

在本节中,我们将通过各种示例学习 isinstance()。

示例:isinstance() 整数检查

下面的代码将整数值 51 与类型 int 进行比较。如果 51 的类型与 int 匹配,则返回 true,否则返回 false。

age = isinstance(51,int)
print("age is an integer:", age)

输出

age is an integer: True

示例:isinstance() 浮点数检查

在此示例中,我们将把浮点值与类型 float 进行比较,即 3.14 的值将与类型 float 进行比较。

pi = isinstance(3.14,float)
print("pi is a float:", pi)

输出

pi is a float: True

示例:isinstance() 字符串检查

message = isinstance("Hello World",str)
print("message is a string:", message)

输出

message is a string: True

示例:isinstance() 元组检查

该代码将元组 (1,2,3,4,5) 与类型 tuple 进行检查。如果输入的类型是 tuple,则返回 true,否则返回 false。

my_tuple = isinstance((1,2,3,4,5),tuple)
print("my_tuple is a tuple:", my_tuple)

输出

my_tuple is a tuple: True

示例:isinstance() 集合检查

该代码将集合 ({1,2,3,4,5}) 与类型 set 进行检查。如果输入的类型是 set,则返回 true,否则返回 false。

my_set = isinstance({1,2,3,4,5},set)
print("my_set is a set:", my_set)

输出

my_set is a set: True

示例:isinstance() 列表检查

该代码将列表 [1,2,3,4,5] 与类型 list 进行检查。如果输入的类型是 list,则返回 true,否则返回 false。

my_list = isinstance([1,2,3,4,5],list)
print("my_list is a list:", my_list)

输出

my_list is a list: True

示例:isinstance() 字典检查

该代码将字典 ({“A”:”a”, “B”:”b”, “C”:”c”, “D”:”d”}) 与类型 dict 进行检查。如果输入的类型是 dict,则返回 true,否则返回 false。

my_dict = isinstance({"A":"a", "B":"b", "C":"c", "D":"d"},dict)
print("my_dict is a dict:", my_dict)

输出

my_dict is a dict: True

示例:isinstance() 对类的测试

该代码展示了使用 isinstance() 对类进行类型检查。将类的对象与 isinstance() 中的类名进行比较。如果对象属于该类,则返回 true,否则返回 false。

class MyClass:
    _message = "Hello World"

_class = MyClass()

print("_class is a instance of MyClass() : ", isinstance(_class,MyClass))

输出

_class is a instance of MyClass() True

Python 中 type() 和 isinstance() 的区别

type() isinstance()
Python 有一个内置函数 type(),可以帮助您查找给定输入的变量的类类型。 Python 有一个内置函数 isinstance(),它将值与给定的类型进行比较。如果给定值和类型匹配,则返回 true,否则返回 false。
返回值是一个类型对象 返回值是布尔值,即 true 或 false。
class A:
my_listA = [1,2,3]

class B(A):
my_listB = [1,2,3]

print(type(A()) == A)
print(type(B()) == A)

输出

True
False

在 type 的情况下,子类检查会返回 false。

class A:
my_listA = [1,2,3]

class B(A):
my_listB = [1,2,3]

print(isinstance(A(), A))
print(isinstance(B(), A))

输出

True
True

isinstance() 在与子类检查时会返回真值。

摘要

  • Python 有一个内置函数 type(),可以帮助您查找给定输入的变量的类类型。例如,如果输入是字符串,您将获得输出 ;对于列表,它将是 ,等等。
  • 对于 type(),您可以传递一个参数,返回值将是给定参数的类类型,例如 type(object)。
  • 也可以向 type() 传递三个参数,即 type(name, bases, dict),在这种情况下,它将返回一个新的类型对象。
  • Python 有一个内置函数 instance(),它将值与给定的类型进行比较。如果给定值和类型匹配,则返回 true,否则返回 false。使用 isinstance(),您可以测试字符串、浮点数、整数、列表、元组、字典、集合、类等。
  • 使用 isinstance() 方法,您可以测试字符串、浮点数、整数、列表、元组、字典、集合、类等。