内置函数isinstance和issubclass介绍和异常处理讲解

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了内置函数isinstance和issubclass介绍和异常处理讲解相关的知识,希望对你有一定的参考价值。

一、isinstance(obj,cls)
检查obj是否是cls的对象

当程序依赖用户输入,即对用户输入的内容进行分门别类的操作时就用isinstance
>>> n1=10
>>> n2=9
>>> print isinstance(n1,int)
True
>>> print isinstance(n1,str)
False
>>>
判断n1是否是int类创建,是返回True,否返回False
isinstance第2个参数可以是第1个参数的类,也可以是第1个参数的基类
>>> class A:
...    pass
...
>>> class B(A):
...    pass
...
>>> b=B()
>>> print isinstance(b,B)
True
>>> print isinstance(b,A)
True
>>>
注意:
obj是对象,cls代表类
判断obj对象是否是clas类的实例
isinstance第2个参数可以是第1个参数的类,也可以是第1个参数的基类

issubclass(sub,super)
功能:判断某个类是否是另外一个类的派生类,或者说某各类是否是某个类的基类
检查sub类是否是super
>>> class A:
...    pass
...
>>> class B(A):
...    pass
...
>>>
>>> print issubclass(B,A)
True
>>> print issubclass(B,int)
False
>>>
判断B是否是A的派生类,换句话说判断A是否是B的基类

二、异常处理

  我们访问网站或者直接运行代码时,有时候会报错,这里报错的实质就是程序没有对异常做特殊处理,所以出现错误页面或者显示异常错误代码,下面来学习如何处理异常:

示例代码:

input = ()
data = (input)

data

运行代码:

D:\Python27\python.exe C:/Users/ryan/PycharmProjects/day08/index.py
请输入数字:123
123

Process finished with exit code 0

输入 是数字,所以直接打印出输入 123但是如果输入的字母或者特殊符号呢?

技术分享

发现报错了,在有用户输入的情况下我们是无法直接控制用户输入内容是否是按照我们要求输入,所以这里我们引入了异常处理语句:

try:

    正式代码块:

except Exception,e:

    "异常提示语句"


该语句的含义是:

如果try模块内代码执行出现异常(错误)则运行except Exception,e:代码块,输出"异常提示语句"

在语句"except Exception,e:"中,e是一个对象(或者说实例),Exception是一个类,e对象是类Exception类创建的。如果上面正式代码块运行错误话,实例e封装了try模块下代码运行的所有错误,即包含了所有正式代码运行所产生的错误提示

__author__ = :
    input = ()
    data = (input)
    data
:

运行代码:

技术分享

D:\Python27\python.exe C:/Users/ryan/PycharmProjects/day08/index.py
请输入数字:abcdef
invalid literal for int() with base 10: ‘abcdef‘

Process finished with exit code 0

从内容可以发现错误提示为:输入的文字不是整形数字,为了避免输出不是整型数字而爆出上述提示页面,所有对提示信息做如下修改:

#!/usr/bin/env python
# -*- coding:utf-8 -*-
__author__ = ‘ryan‘
try:
   input = raw_input("请输入数字:")
   data = int(input)
   print data
except Exception,e:
   print "你输入的不是数字"
   #这里可以定义日志record=e,然后将record写入到日志文件

再运行该代码:

D:\Python27\python.exe C:/Users/ryan/PycharmProjects/day08/index.py
请输入数字:bd
你输入的不是数字

Process finished with exit code 0

技术分享


本文出自 “平平淡淡才是真” 博客,转载请与作者联系!

以上是关于内置函数isinstance和issubclass介绍和异常处理讲解的主要内容,如果未能解决你的问题,请参考以下文章

内置函数isinstance和issubclass介绍和异常处理讲解

issubclass和isinstance,反射,内置方法

17 Apr 18 内置函数(isinstance,issubclass)反射 __str__ __del__ __call__ 元类

isinstance,issubclass,内置函数__str__和__repr__,__format__

类的判断函数:issubclass,type,isinstance

OOP 内置函数