您的位置:首页 > 编程语言 > Python开发

Python之路【第五篇】:面向对象及相关

2016-12-26 19:18 549 查看

Python之路【第五篇】:面向对象及相关

 

面向对象基础

基础内容介绍详见一下两篇博文:

其他相关

一、isinstance(obj, cls)

 检查是否obj是否是类 cls 的对象

二、issubclass(sub, super)

检查sub类是否是 super 类的派生类

三、异常处理

1、异常基础

在编程过程中为了增加友好性,在程序出现bug时一般不会将错误信息显示给用户,而是现实一个提示的页面,通俗来说就是不让用户看见大黄页!!!

需求:将用户输入的两个数字相加

dic = ["wupeiqi", 'alex']
try:
dic[10]
except IndexError, e:
print e
dic = {'k1':'v1'}
try:
dic['k20']
except KeyError, e:
print e
s1 = 'hello'
try:
int(s1)
except ValueError, e:
print e

对于上述实例,异常类只能用来处理指定的异常情况,如果非指定异常则无法处理。

所以,写程序时需要考虑到try代码块中可能出现的任意异常,可以这样写:

万能异常 在python的异常中,有一个万能异常:Exception,他可以捕获任意异常,即:

接下来你可能要问了,既然有这个万能异常,其他异常是不是就可以忽略了!

答:当然不是,对于特殊处理或提醒的异常需要先定义,最后定义Exception来确保程序正常运行。

3、异常其他结构

4、主动触发异常

5、自定义异常

6、断言

四、反射

python中的反射功能是由以下四个内置函数提供:hasattr、getattr、setattr、delattr,改四个函数分别用于对对象内部执行:检查是否含有某成员、获取成员、设置成员、删除成员。

[quote]

详细解析:

当我们要访问一个对象的成员时,应该是这样操作:

 
#!/usr/bin/env python
# -*- coding:utf-8 -*-

def dev():
return 'dev'

设计模式

一、单例模式

单例,顾名思义单个实例。

[quote]

学习单例之前,首先来回顾下面向对象的内容:

python的面向对象由两个非常重要的两个“东西”组成:类、实例

面向对象场景一:

如:创建三个游戏人物,分别是:

  • 苍井井,女,18,初始战斗力1000
  • 东尼木木,男,20,初始战斗力1800
  • 波多多,女,19,初始战斗力2500
#!/usr/bin/env python
#coding:utf-8
from wsgiref.simple_server import make_server

# ########### 单例类定义 ###########
class DbHelper(object):

__instance = None

def __init__(self):
self.hostname = '1.1.1.1'
self.port = 3306
self.password = 'pwd'
self.username = 'root'

@staticmethod
def singleton():
if DbHelper.__instance:
return DbHelper.__instance
else:
DbHelper.__instance = DbHelper()
return DbHelper.__instance

def fetch(self):
# 连接数据库
# 拼接sql语句
# 操作
pass

def create(self):
# 连接数据库
# 拼接sql语句
# 操作
pass

def remove(self):
# 连接数据库
# 拼接sql语句
# 操作
pass

def modify(self):
# 连接数据库
# 拼接sql语句
# 操作
pass

class Handler(object):

def index(self):
obj =  DbHelper.singleton()
print id(single)
obj.create()
return 'index'

def news(self):
return 'news'

def RunServer(environ, start_response):
start_response('200 OK', [('Content-Type', 'text/html')])
url = environ['PATH_INFO']
temp = url.split('/')[1]
obj = Handler()
is_exist = hasattr(obj, temp)
if is_exist:
func = getattr(obj, temp)
ret = func()
return ret
else:
return '404 not found'

if __name__ == '__main__':
httpd = make_server('', 8001, RunServer)
print "Serving HTTP on port 8001..."
httpd.serve_forever()

总结:单利模式存在的目的是保证当前内存中仅存在单个实例,避免内存浪费!!!

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: