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() 方法,您可以测试字符串、浮点数、整数、列表、元组、字典、集合、类等。