万隆的笔记 万隆的笔记
博文索引
笔试面试
  • 在线学站

    • 菜鸟教程 (opens new window)
    • 入门教程 (opens new window)
    • Coursera (opens new window)
  • 在线文档

    • w3school (opens new window)
    • Bootstrap (opens new window)
    • Vue (opens new window)
    • 阿里开发者藏经阁 (opens new window)
  • 在线工具

    • tool 工具集 (opens new window)
    • bejson 工具集 (opens new window)
    • 文档转换 (opens new window)
  • 更多在线资源
  • Changlog
  • Aboutme
GitHub (opens new window)
博文索引
笔试面试
  • 在线学站

    • 菜鸟教程 (opens new window)
    • 入门教程 (opens new window)
    • Coursera (opens new window)
  • 在线文档

    • w3school (opens new window)
    • Bootstrap (opens new window)
    • Vue (opens new window)
    • 阿里开发者藏经阁 (opens new window)
  • 在线工具

    • tool 工具集 (opens new window)
    • bejson 工具集 (opens new window)
    • 文档转换 (opens new window)
  • 更多在线资源
  • Changlog
  • Aboutme
GitHub (opens new window)
  • Python

    • Python简介
    • Python基础语法
    • Python中的装饰器
    • Python中new、init和call的用法
    • Python的内置函数 type() 和 isinstance()
      • type函数
      • isinstance函数
      • type函数和isinstance函数的区别
    • Python中metaclass的原理
    • Python中的迭代器
  • Python
  • Python
2020-11-10
目录

Python的内置函数 type() 和 isinstance()

# Python的内置函数 type() 和 isinstance()

# type函数

type()主要有两个功能:

  • 查看一个变量(对象)的类型,语法:

    type(object)
    

    当调用type方法传入一个参数时,会返回这个对象的类型。这个时候type()通常与object.__class__功能相同。

  • 创建一个类,语法:

type(name, bases, dict)


name:类的名称。

bases:基类的元组。(Python中允许多继承)。

dict:字典,类的属性,是一个dict字典类型。

```python
if __name__ == "__main__":
  ClassVar = type("ClassVar", (object,), dict(name="type test"))
  a = ClassVar()
  print(type(a))
  print(a.name)
    
"""
<class '__main__.ClassVar'>
type test
""" 

通过type() 定义创建的类和通过 class Xxx ... 定义创建的类是一样的。这种可以很方便地在运行期间动态创建类的特性,体现了Python作为一种解释型动态语言与静态语言(如Java、C++)的最大区别。

# isinstance函数

isinstance()作用是判断一个对象是不是某个类型的实例。与type()有点类似。语法为:

isinstance(object, classinfo)

object:实例对象

classinfo:期望的类型,可以是直接或间接类名、基本类型或者由它们组成的元组。对于基本类型来说classinfo可以是:

int, float, bool, complex, str, list, dict, set, tuple

如果object是classinfo的一个实例或classinfo子类的一个实例,则返回True,否则返回False

if __name__ == "__main__":
    b = 10
    print(isinstance(b, int))
    print(isinstance(b, str))
    print(isinstance(b, (int, str)))

"""
True
False
True
"""

# type函数和isinstance函数的区别

type()和isinstance()的区别:

  • type() 不会认为子类是一种父类类型,不考虑继承关系。

  • isinstance() 会认为子类是一种父类类型,考虑继承关系。

如果要判断两个类型是否相同推荐使用 isinstance()。此外,如果想要知道子类和父类之间的继承关系,可以使用另一个内置函数issubclass()或者object.__bases__。

上次更新: 5/31/2023, 1:14:42 AM
Python中metaclass的原理

Python中metaclass的原理→

最近更新
01
2025
01-15
02
Elasticsearch面试题
07-17
03
Elasticsearch进阶
07-16
更多文章>
Theme by Vdoing
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式