python 3.x 学习笔记12 (反射 and 异常)
1.反射
通过字符串映射或修改程序运行时的状态、属性、方法
getattr(obj,name_str): 根据字符串name_str去获取obj对象里的对应的方法的内存地址
hasttr(obj,name_str): 判断一个对象obj里是否有对应的字符串的方法
setattr(obj,'y',z): setattr 函数对应函数 getatt(),用于设置属性值,该属性必须存在。
delattr(obj,'y'): 从给定的对象中删除命名的属性
class Dog(object):
    def __init__(self,name):
        self.name = name
    def eat(self):
        print('%s is eating ....'%self.name)
d = Dog('xiaohei')                     #实例化对象
choice = input('>>>>:').strip()      #strip()去除左右空格
if hasattr(d,choice):                #检查实例化d中有没有choice
    func = getattr(d,choice)         #getattr返回d中的choice的内存地址
    func()                            #执行函数
2.异常基础
在编程过程中为了增加友好性,在程序出现bug时一般不会将错误信息显示给用户,而是现实一个提示的页面,通俗来说就是不让用户看见大黄页。
1)基本结构
try:
pass
except Exception as e:
pass
2)其他结构
#异常结构
try:
# 主代码块
pass
except KeyError as e:
# 异常时,执行该块
pass
else:
# 主代码块执行完,即不异常,执行该块
pass
finally:
# 无论异常与否,都执行该块
pass
3)主动触发异常
try:
raise Exception('错误...')
except Exception as e:
print(e)
3.常用的异常种类
AttributeError                    #试图访问一个对象没有的树形,比如foo.x,但是foo没有属性x
IOError                             #输入/输出异常;基本上是无法打开文件
ImportError                       # 无法引入模块或包;基本上是路径问题或名称错误
IndentationError                #语法错误(的子类) ;代码没有正确对齐
IndexError                         #下标索引超出序列边界,比如当x只有三个元素,却试图访问x[5]
KeyError                            #  试图访问字典里不存在的键
KeyboardInterrupt             # Ctrl+C被按下
NameError                         # 使用一个还未被赋予对象的变量
SyntaxError                       #  Python代码非法,代码不能编译(个人认为这是语法错误,写错了)
TypeError                           # 传入对象类型与要求的不符合
UnboundLocalError           #  试图访问一个还未被设置的局部变量,基本上是由于另有一个同名的全局变量,导致你以为正在访问它
ValueError                           #  传入一个调用者不期望的值,即使值的类型是正确的
python 3.x 学习笔记12 (反射 and 异常)的更多相关文章
- python网络爬虫学习笔记
		python网络爬虫学习笔记 By 钟桓 9月 4 2014 更新日期:9月 4 2014 文章文件夹 1. 介绍: 2. 从简单语句中開始: 3. 传送数据给server 4. HTTP头-描写叙述 ... 
- Python Built-in Function 学习笔记
		Python Built-in Function 学习笔记 1. 匿名函数 1.1 什么是匿名函数 python允许使用lambda来创建一个匿名函数,匿名是因为他不需要以标准的方式来声明,比如def ... 
- Python3+Selenium3+webdriver学习笔记12(js操作应用:滚动条 日历 内嵌div)
		#!/usr/bin/env python# -*- coding:utf-8 -*-'''Selenium3+webdriver学习笔记12(js操作应用:滚动条 日历 内嵌div)'''from ... 
- Spring源码学习笔记12——总结篇,IOC,Bean的生命周期,三大扩展点
		Spring源码学习笔记12--总结篇,IOC,Bean的生命周期,三大扩展点 参考了Spring 官网文档 https://docs.spring.io/spring-framework/docs/ ... 
- Requests:Python HTTP Module学习笔记(一)(转)
		Requests:Python HTTP Module学习笔记(一) 在学习用python写爬虫的时候用到了Requests这个Http网络库,这个库简单好用并且功能强大,完全可以代替python的标 ... 
- Ext.Net学习笔记12:Ext.Net GridPanel Filter用法
		Ext.Net学习笔记12:Ext.Net GridPanel Filter用法 Ext.Net GridPanel的用法在上一篇中已经介绍过,这篇笔记讲介绍Filter的用法. Filter是用来过 ... 
- SQL反模式学习笔记12  存储图片或其他多媒体大文件
		目标:存储图片或其他多媒体大文件 反模式:图片存储在数据库外的文件系统中,数据库表中存储文件的对应的路径和名称. 缺点: 1.文件不支持Delete操作.使用SQL语句删除一条记录时,对应的文 ... 
- golang学习笔记12 beego table name `xxx` repeat register, must be unique 错误问题
		golang学习笔记12 beego table name `xxx` repeat register, must be unique 错误问题 今天测试了重新建一个项目生成新的表,然后复制到旧的项目 ... 
- Spring MVC 学习笔记12 —— SpringMVC+Hibernate开发(1)依赖包搭建
		Spring MVC 学习笔记12 -- SpringMVC+Hibernate开发(1)依赖包搭建 用Hibernate帮助建立SpringMVC与数据库之间的联系,通过配置DAO层,Service ... 
随机推荐
- 本地PC安裝Centos 6.5 操作手冊
			http://www.xlgps.com/article/130038.html 一.准备工作 1.下载Centos6.5 ISO文件 我在官网上下的6.5版本CentOS-6.5-x86_64-bi ... 
- ubuntu16.04 安装 docker-compose
			下载安装 docker-composecurl -L https://github.com/docker/compose/releases/download/1.15.0/docker-compose ... 
- 数组常用API
			内容待添加... //根据分数排名字 //方法1 var students = ['小明','小红','小花'] var scores = {小明:,小红:,小花:} //1 添加分数到student ... 
- vue 父子组件通信props/emit
			props 1.父组件传递数据给子组件 父组件: <parent> <child :childMsg="msg"></child>//这里必须要 ... 
- firstChild与firstElementChild
			相同点: 都是获取父元素下的第一个节点对象 不同点: firstChild: IE6.7.8 第一个元素节点; 非IE6.7.8:返回第一个元素节点或文本节点 firstElementChild: I ... 
- 一个javascript面试题解析
			; function fn(){ console.log(this.length); } var obj = { length: , method: function (fn) { fn(); // ... 
- offscreen-render
			offscreen-render 什么是offscreen-render?offscreen-render涉及的内容比较多,有offscreen-render那就有onscreen render,on ... 
- 路飞学城Python-Day39(第四模块复习题)
			并发编程 一.简答题 1,简述计算机操作系统的中断的作用 由于cpu本身一次只能执行一个程序,操作系统提供的中断机制使得cpu能够实现不断的在各个程序间进行切换,给人的感觉就是多个程序同时执行 为什么 ... 
- Python笔记(28)-----继承
			来自https://blog.csdn.net/sunwukong_hadoop/article/details/80175292 1.Python的继承以及调用父类成员 python子类调用父类成员 ... 
- 关于npm警告fsevents和vue-cli项目中的一些问题,持续更新
			1.install一个npm包的时候,总是会报这个警告: 网上查资料知道,这个fsevents是mac下用的,windows忽略即可: 2.关于在main.js中引入less文件的问题, 就会报这个错 ... 
