python 异常 反射
异常 反射
一、异常处理:
- AttributeError 试图访问一个对象没有的树形,比如foo.x,但是foo没有属性x
- IOError 输入/输出异常;基本上是无法打开文件
- ImportError 无法引入模块或包;基本上是路径问题或名称错误
- IndentationError 语法错误(的子类) ;代码没有正确对齐
- IndexError 下标索引超出序列边界,比如当x只有三个元素,却试图访问x[5]
- KeyError 试图访问字典里不存在的键
- KeyboardInterrupt Ctrl+C被按下
- NameError 使用一个还未被赋予对象的变量
- SyntaxError Python代码非法,代码不能编译(个人认为这是语法错误,写错了)
- TypeError 传入对象类型与要求的不符合
- UnboundLocalError 试图访问一个还未被设置的局部变量,基本上是由于另有一个同名的全局变量,
- 导致你以为正在访问它
- ValueError 传入一个调用者不期望的值,即使值的类型是正确的
- 常用异常
- 常用异常
常用异常
- ArithmeticError
- AssertionError
- AttributeError
- BaseException
- BufferError
- BytesWarning
- DeprecationWarning
- EnvironmentError
- EOFError
- Exception
- FloatingPointError
- FutureWarning
- GeneratorExit
- ImportError
- ImportWarning
- IndentationError
- IndexError
- IOError
- KeyboardInterrupt
- KeyError
- LookupError
- MemoryError
- NameError
- NotImplementedError
- OSError
- OverflowError
- PendingDeprecationWarning
- ReferenceError
- RuntimeError
- RuntimeWarning
- StandardError
- StopIteration
- SyntaxError
- SyntaxWarning
- SystemError
- SystemExit
- TabError
- TypeError
- UnboundLocalError
- UnicodeDecodeError
- UnicodeEncodeError
- UnicodeError
- UnicodeTranslateError
- UnicodeWarning
- UserWarning
- ValueError
- Warning
- ZeroDivisionError
- 更多异常
- 更多异常
更多异常
- 1 try:
- 2 intput = raw_input()
- 3 data = int(intput)
- 4 except Exception,e: #e是Exception类的一个对象,调用__str__方法
5 print"请输入数字"
- #输出sb,输出A类的__str__方法
- class A:
- def __str__(self):
- return 'sb'
- obj = A()
- print obj
- #自定义错误异常
- class AlexError(Exception):
- def __init__(self,msg=None):
- self.message = msg
- def __str__(self):
- if self.message:
- return self.message
- else:
- return 'alex error'
- try:
- raise AlexError('error') #当有值时,输出值,否则输出alex erroer
- except Exception,e:
- print e
- 自定义异常
自定义异常
二、反射:
- helpper.py #模块
- -----------------------------------------------
- def dev():
- return "home dev"
- def index():
- return "home index"
- index.py #模块
- -----------------------------------------------
- import helpper
- url = raw_input('url:') #输入helpper/dev
- if url == "helpper/dev":
- ret = helpper.dev()
- print ret
- elif url == "helpper/index":
- ret = helpper.index()
- print ret
- Example
Example
- helpper.py #模块
- -----------------------------------------------
- def dev():
- return "home dev"
- def index():
- return "home index"
- index.py #模块
- -----------------------------------------------
- import helpper
- url = raw_input('url:') #输入helpper/dev
- controller,action = url.split('/')
- func = getattr(helpper,action)
- ret = func()
- print ret
- Example 进阶
Example 进阶
- helpper.py #模块
- --------------------------------------------
- def dev():
- return "home dev"
- def index():
- return "home index"
- index.py #模块
- ---------------------------------------------
- controller,action = raw_input("url:").split('/')
- model = __import__(controller)
- func = getattr(model,action)
- ret = func()
- print ret
- __import__和反射 getattr
__import__和反射 getattr
二、反射(2):
- import sys
- class WebServer(object):
- def __init__(self,host,port):
- self.host = host
- self.port = port
- def start(self):
- print("Server is starting...")
- def stop(self):
- print("Server is stopping...")
- def restart(self):
- self.stop()
- self.start()
- if __name__ == "__main__":
- obj = WebServer('localhost','')
- if sys.argv[1] == "start":
- obj.start()
- example
example
- import sys
- class WebServer(object):
- def __init__(self,host,port):
- self.host = host
- self.port = port
- def start(self):
- print("Server is starting...")
- def stop(self):
- print("Server is stopping...")
- def restart(self):
- self.stop()
- self.start()
- if __name__ == "__main__":
- obj = WebServer('localhost','')
- cmd_list = {
- 'start':obj.start,
- 'stop':obj.stop
- }
- if sys.argv[1] in cmd_list:
- cmd_list[sys.argv[1]]()
- example 字典形式
example 字典形式
- import sys
- class WebServer(object):
- def __init__(self,host,port):
- self.host = host
- self.port = port
- def start(self):
- print("Server is starting...")
- def stop(self):
- print("Server is stopping...")
- def restart(self):
- self.stop()
- self.start()
- if __name__ == "__main__":
- obj = WebServer('localhost','')
- if hasattr(obj,sys.argv[1]):
- func = getattr(obj,sys.argv[1]) #获取obj.start 的内存地址
- func()
- example 进阶hasattr getattr
example 进阶hasattr getattr
- import sys
- class WebServer(object):
- def __init__(self,host,port):
- self.host = host
- self.port = port
- def start(self):
- print("Server is starting...")
- def stop(self):
- print("Server is stopping...")
- def restart(self):
- self.stop()
- self.start()
- def test_run(name):
- print("running..",name)
- if __name__ == "__main__":
- obj = WebServer('localhost','')
- if hasattr(obj,sys.argv[1]):
- func = getattr(obj,sys.argv[1]) #获取obj.start 的内存地址
- func()
- setattr(obj,"run",test_run)
- obj.run('xxx')
- ----------------------------------------------------------------------
- #/usr/bin/env python
- # -*- coding:utf-8 -*-
- import sys
- class WebServer(object):
- def __init__(self,host,port):
- self.host = host
- self.port = port
- def start(self):
- print("Server is starting...")
- def stop(self):
- print("Server is stopping...")
- def restart(self):
- self.stop()
- self.start()
- def test_run(self,name):
- print("running..",name,self.host)
- if __name__ == "__main__":
- obj = WebServer('localhost','')
- if hasattr(obj,sys.argv[1]):
- func = getattr(obj,sys.argv[1]) #获取obj.start 的内存地址
- func()
- setattr(obj,"run",test_run)
- obj.run(obj,'xxx')
- setattr
setattr
三、设计模式:
- class SqlHelper:
- __static_instance = None
- def __init__(self):
- self.hostname = '0.0.0.0'
- self.port = 3306
- self.user = 'root'
- self.passd = ''
- @classmethod
- def instance(cls):
- if cls.__static_instance:
- return cls.__static_instance
- else:
- cls.__static_instance = SqlHelper()
- return cls.__static_instance
- def fetch(self):
- pass
- def remove(self):
- pass
- def add_user():
- obj = SqlHelper.instance()
- obj.fetch()
- def del_user():
- obj = SqlHelper.instance()
- obj.remove()
- print id(SqlHelper.instance())
- print id(SqlHelper.instance())
- 单例模式一
单例模式一
python 异常 反射的更多相关文章
- python 异常
引用一段来自菜鸟教程的文章:http://www.runoob.com/python/python-exceptions.html Python 异常处理 python提供了两个非常重要的功能来处理p ...
- python的反射机制
转载自:http://www.cnblogs.com/feixuelove1009/p/5576206.html 对编程语言比较熟悉的朋友,应该知道"反射"这个机制.Python作 ...
- python的反射
目前大多数网站都是通过路由的方法来,处理url请求,如果有很多个url的话,不停的include或者用if判断匹配,似乎不太符合情理,因此这里讲讲python的反射机制, 自动装在模块.请看下面的实例 ...
- 简单谈谈python的反射机制
转:http://www.jb51.net/article/87479.htm 本文主要介绍python中的反射,以及该机制的简单应用,熟悉JAVA的程序员,一定经常和Class.forName打交道 ...
- #21 Python异常
前言 运行程序时经常遇到各种错误,例如:ImportError(导入模块错误).IndexError(索引错误).NameError(变量错误).SyntaxError(语法错误).Indentati ...
- 【转】简单谈谈python的反射机制
[转]简单谈谈python的反射机制 对编程语言比较熟悉的朋友,应该知道“反射”这个机制.Python作为一门动态语言,当然不会缺少这一重要功能.然而,在网络上却很少见到有详细或者深刻的剖析论文.下面 ...
- Python异常和异常处理
Python异常和异常处理2017年12月20日 22:17:08 Megustas_JJC 阅读数:114 标签: python 异常处理 更多 个人分类: Python 版权声明:本文为博主原创文 ...
- python——异常except语句用法与引发异常
except: #捕获所有异常 except: <异常名>: #捕获指定异常 except:<异常名1,异常名2):捕获异常1或者异常2 except:<异常名>,< ...
- 笔记-python异常信息输出
笔记-python异常信息输出 1. 异常信息输出 python异常捕获使用try-except-else-finally语句: 在except 语句中可以使用except as e,然后通 ...
随机推荐
- 求第k小的元素
用快排解决: 用快排,一趟排序后,根据基准值来缩小问题规模.基准值的下角标i 加1 表示了基准值在数组中第几小.如果k<i+1,那就在左半边找:如果k>i+1那就在右半边找.当基准值的下角 ...
- 笔记:Maven 依赖及配置详解
dependencies 配置节,主要用于配置项目依赖的其他包,其子节点 dependency 用来配置具体依赖包,有groupId.artifactId.version.scope等子节点来说明,配 ...
- 【Python】随机模块random & 日期时间のtime&&datetime
■ random 顾名思义,random提供了python中关于模拟随机的一些方法.这些方法都一看就懂的,不多说了: random.random() 返回0<n<=1的随机实数 rando ...
- 【Python】排列组合itertools & 集合set
■itertools 利用python的itertools可以轻松地进行排列组合运算 itertools的方法基本上都返回迭代器 比如 •itertools.combinations('abcd',2 ...
- 接口登录CSDN发布博客---封装方法,使用unittest框架
一个简单的跑接口流程:登录后发表带图片的博客.这里涉及到的知识点: 1.登录时通过cookies去保持登录状态,把cookies添加到一个session中,这样可以保持长时间登录状态: 2.我们通过爬 ...
- Entity Framework——并发策略
使用EF框架遇到并发时,一般采取乐观并发控制. 1支持并发检验 为支持并发检验,需要对实体进行额外的设置.默认情况下是不支持并发检验的.有以下两种方式: 方式名称 说明 时间戳注解/行版本 使用Tim ...
- NVisionXR引擎基本介绍
NVisionXR引擎基本介绍 一. 介绍 1.1 NVisionXR是什么? NVisionXR引擎是全球首款跨平台多兼容的原生AR应用开发引擎,让AR应用开发更高效. 1. ...
- Java字符串的split(String str)方法空串的问题
String strs[] = "SS1BB2CC3".split("\\D+"); public static String Test(){ Date d = ...
- hibernate框架学习笔记7:HQL查询、Criteria查询简介
HQL查询:hibernate独有的查询语言 适用于不复杂的多表查询 示例: 实体类: package domain; public class Customer { private Long cus ...
- ThreadLocal 原理和使用场景分析
ThreadLocal 不知道大家有没有用过,但至少听说过,今天主要记录一下 ThreadLocal 的原理和使用场景. 使用场景 直接定位到 ThreadLocal 的源码,可以看到源码注释中有很清 ...