python 3.x 学习笔记12 (反射 and 异常)
2018-06-18 01:13:05来源:未知 阅读 ()
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 # 传入一个调用者不期望的值,即使值的类型是正确的
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
上一篇:基本数据类型(二)
- python3基础之“术语表(2)” 2019-08-13
- python3 之 字符串编码小结(Unicode、utf-8、gbk、gb2312等 2019-08-13
- Python3安装impala 2019-08-13
- 小白如何入门 Python 爬虫? 2019-08-13
- python_字符串方法 2019-08-13
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash