Python面向对象相关
2016-02-29 13:59
573 查看
一、异常处理
1.在编程过程中为了增加友好性,在程序出现bug时一般不会将错误信息显示给用户,而是显示一个提示的页面,通俗来说就是不让用户看见大黄页!!!
python程序中常见的错误显示信息有:
s1 = 'hello'
try:
int(s1)
except KeyError as e:
print('键错误')
except IndexError as e:
print('索引错误')
except Exception as e:
print('错误')
2.异常其他结构
try:
# 主代码块
pass
except KeyError as e:
# 异常时,执行该块
pass
else:
# 主代码块执行完,执行该块
pass
finally:
# 无论异常与否,最终执行该块
pass
3.自定义主动触发异常
class SubError(Exception): #自定义错误类
def __init__(self,msg= None):
self.msg = msg
def __str__(self):
if self.msg:
return self.msg
else:
return 'self define error!'
try: # 代码主体
arg = 'this is a self define error!'
raise SubError(arg) # 主动触发错误类
except Exception as e: # e为Exception实例化对象,错误信息存储在对象中
print(e)
4.断言
当首要条件不满足要求时整个程序将不会执行
a = 1 # 首要条件
try:
assert a == 2 # 断言首要条件是否满足要求
print('test')
except Exception as e:
print('basic error:',e)
二、反射
python中的反射功能是由以下四个内置函数提供:hasattr、getattr、setattr、delattr,改四个函数
分别用于对对象内部执行:检查是否含有某成员、获取成员、设置成员、删除成员。
class Foo(object):
def __init__(self):
self.name = 'wupeiqi'
def func(self):
return 'func'
obj = Foo()
# #### 检查是否含有成员 ####
hasattr(obj, 'name')
hasattr(obj, 'func')
# #### 获取成员 ####
getattr(obj, 'name')
getattr(obj, 'func')
# #### 设置成员 ####
setattr(obj, 'age', 18)
setattr(obj, 'show', lambda num: num + 1)
# #### 删除成员 ####
delattr(obj, 'name')
delattr(obj, 'func')
1.当我们要访问一个对象的成员时,应该是这样操作:
方法一:
class Foo(object):
def __init__(self):
self.name = 'alex'
def func(self):
return 'func'
# 不允许使用 obj.name
obj = Foo()
print obj.__dict__['name']
方法二:
class Foo(object):
def __init__(self):
self.name = 'alex'
def func(self):
return 'func'
# 不允许使用 obj.name
obj = Foo()
print getattr(obj, 'name')
2.动态加载、反射操作模块中成员
class Foo(object):
def __init__(self,name):
self.name = name
def dev1(self):
return 'this is dev1 function'
mod,cls,fun = input('url:').split('/')
module = __import__(mod)
mc = getattr(module,cls)
mcf = getattr(mc,fun)
ret = mcf('a')
print(ret)
五、单例模式
单例模式即为单个实例模式
# ########### 单例类定义 ###########
class Foo(object):
__instance = None # 私有字段
@staticmethod # 静态方法
def singleton():
if Foo.__instance:
return Foo.__instance
else:
Foo.__instance = Foo()
return Foo.__instance
# ########### 获取实例 ###########
obj = Foo.singleton()
第一次调用singleton方法时实现实例化类,第二次及以后调用singleton方法时均为同一实例,
总结:单利模式存在的目的是保证当前内存中仅存在单个实例,避免内存浪费!!!
本文出自 “纷繁中享受技术的简单喜悦” 博客,请务必保留此出处http://51enjoy.blog.51cto.com/8393791/1745978
1.在编程过程中为了增加友好性,在程序出现bug时一般不会将错误信息显示给用户,而是显示一个提示的页面,通俗来说就是不让用户看见大黄页!!!
python程序中常见的错误显示信息有:
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另外Exception可以捕获任何异常:
s1 = 'hello'
try:
int(s1)
except KeyError as e:
print('键错误')
except IndexError as e:
print('索引错误')
except Exception as e:
print('错误')
2.异常其他结构
try:
# 主代码块
pass
except KeyError as e:
# 异常时,执行该块
pass
else:
# 主代码块执行完,执行该块
pass
finally:
# 无论异常与否,最终执行该块
pass
3.自定义主动触发异常
class SubError(Exception): #自定义错误类
def __init__(self,msg= None):
self.msg = msg
def __str__(self):
if self.msg:
return self.msg
else:
return 'self define error!'
try: # 代码主体
arg = 'this is a self define error!'
raise SubError(arg) # 主动触发错误类
except Exception as e: # e为Exception实例化对象,错误信息存储在对象中
print(e)
4.断言
当首要条件不满足要求时整个程序将不会执行
a = 1 # 首要条件
try:
assert a == 2 # 断言首要条件是否满足要求
print('test')
except Exception as e:
print('basic error:',e)
二、反射
python中的反射功能是由以下四个内置函数提供:hasattr、getattr、setattr、delattr,改四个函数
分别用于对对象内部执行:检查是否含有某成员、获取成员、设置成员、删除成员。
class Foo(object):
def __init__(self):
self.name = 'wupeiqi'
def func(self):
return 'func'
obj = Foo()
# #### 检查是否含有成员 ####
hasattr(obj, 'name')
hasattr(obj, 'func')
# #### 获取成员 ####
getattr(obj, 'name')
getattr(obj, 'func')
# #### 设置成员 ####
setattr(obj, 'age', 18)
setattr(obj, 'show', lambda num: num + 1)
# #### 删除成员 ####
delattr(obj, 'name')
delattr(obj, 'func')
1.当我们要访问一个对象的成员时,应该是这样操作:
方法一:
class Foo(object):
def __init__(self):
self.name = 'alex'
def func(self):
return 'func'
# 不允许使用 obj.name
obj = Foo()
print obj.__dict__['name']
方法二:
class Foo(object):
def __init__(self):
self.name = 'alex'
def func(self):
return 'func'
# 不允许使用 obj.name
obj = Foo()
print getattr(obj, 'name')
2.动态加载、反射操作模块中成员
class Foo(object):
def __init__(self,name):
self.name = name
def dev1(self):
return 'this is dev1 function'
mod,cls,fun = input('url:').split('/')
module = __import__(mod)
mc = getattr(module,cls)
mcf = getattr(mc,fun)
ret = mcf('a')
print(ret)
五、单例模式
单例模式即为单个实例模式
# ########### 单例类定义 ###########
class Foo(object):
__instance = None # 私有字段
@staticmethod # 静态方法
def singleton():
if Foo.__instance:
return Foo.__instance
else:
Foo.__instance = Foo()
return Foo.__instance
# ########### 获取实例 ###########
obj = Foo.singleton()
第一次调用singleton方法时实现实例化类,第二次及以后调用singleton方法时均为同一实例,
总结:单利模式存在的目的是保证当前内存中仅存在单个实例,避免内存浪费!!!
本文出自 “纷繁中享受技术的简单喜悦” 博客,请务必保留此出处http://51enjoy.blog.51cto.com/8393791/1745978
相关文章推荐
- 【python】编程语言入门经典100例--14
- python学习(2)基本语法
- python学习(1)启程
- python集合操作
- python 读写文件和设置文件的字符编码
- python(0)-对《python中str操作的学习》的补充
- python(0)-Python中str操作的学习
- Python中用format函数格式化字符串的用法
- python 逐行读取文件的三种方法
- Python解一道题的N种做法(2)
- Python中三引号的区别
- python Debug 单步调试
- IPython使用问题记录
- theano 0.8与pydot、graphziv的冲突解决
- python 环境搭建
- python类中实现dict的功能
- Python执行系统命令的方法 os.system(),os.popen(),commands
- python爬虫代码
- python(6)时间戳和北京时间互转,输出当前的时间和推到七天前的日期
- 1-Python 安装 Matplotlib