面向对象扩展
1、isinstance(obj, cls), issubclass(sub, super)示例
class A(object):
def a(self):
print "A"
class B(A): #B继承A
def b(self):
print "B"
t = B()
print isinstance(t, A) #判断t是否为A的实例对象
print isinstance(t, B) #判断t是否为B的实例对象
print issubclass(B, A) #判断B是否为A的派生类
2、异常处理
异常的完整结构
try:
pass #主代码块在这里执行
except:
pass #出现异常时,执行此处语句
else:
pass #主代码块执行完毕之后,执行此处语句
finally:
pass #不管是否有异常,最终都会输出结果
自定义异常
"""__str__方法"""
class MyError(Exception):
def __init__(self, msg):
self.message = msg
def __str__(self):
return self.message
try:
#"http error"是传入的message信息,产生异常时会调用__str__方法,并返回传入的 # http error
raise MyError("http error")
except Exception, e:
print e
3、反射
"""第一种方法:反射(针对海量页面,根据URL的不同返回不同的页面)"""
print "Welcome, My Web"
url = raw_input("http://")
controller, action = url.split("/")
func = getattr(home, action)
ret = func()
print ret
"""第二种方法,匹配每个不同的URL,返回不同的页面"""
print "Welcome, My Web"
url = raw_input("http://")
if url == "home/home":
print home.home()
elif url == "home/page":
print home.page()
elif url == "home/row":
print home.row()
else:
print "wrong url"
getattr, setattr, hasattr, delattr
print dir(home)
print hasattr(home, "home")
setattr(home, "liyang", "gentle men")
print dir(home)
delattr(home, "liyang")
delattr(home, "row")
print dir(home)
结果:
[‘__author__‘, ‘__builtins__‘, ‘__doc__‘, ‘__file__‘, ‘__name__‘, ‘__package__‘, ‘home‘, ‘page‘, ‘row‘]
True
[‘__author__‘, ‘__builtins__‘, ‘__doc__‘, ‘__file__‘, ‘__name__‘, ‘__package__‘, ‘home‘, ‘liyang‘, ‘page‘, ‘row‘]
[‘__author__‘, ‘__builtins__‘, ‘__doc__‘, ‘__file__‘, ‘__name__‘, ‘__package__‘, ‘home‘, ‘page‘]
"""反射三,动态导入模块"""
controller, action = raw_input("http://").split("/")
#将模块以字符串的形式导入,输入home/home,得到返回值home
module = __import__(controller)
func = getattr(module, action)
ret = func()
print ret
结果:
http://home/home
home
4、Socket编程
"""socket-server"""
def main():
# 创建socket对象
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM, 0)
# 监听端口, 地址以元组的形式表现
sock.bind((‘127.0.0.1‘, 8001))
# 开始监听,5表示队列中可以保存的,未被服务器端所处理的连接
sock.listen(5)
while True:
# 阻塞,deng 。。。。
# 直到有请求连接
print ‘....‘
connection, address = sock.accept()
# connection,代表客户端socket对象,
# address,客户端IP地址
#handle_request(connection)
#接受客户端传来的信息
buf = connection.recv(1024)
print buf
connection.send("HTTP/1.1 200 OK\r\n\r\n")
connection.send("Hello, World")
connection.close()
if __name__ == ‘__main__‘:
main()
""""socket-client:"""
import socket
__author__ = ‘LiYang‘
#创建socket对象
obj_client = socket.socket()
#客户端连接服务器端的地址
obj_client.connect(("localhost", 8021))
#客户端向服务器端发送的数据
obj_client.send("client")
#客户端接受服务器端的返回值,并输出
server_data = obj_client.recv(1024)
print server_data
#关闭客户端连接
obj_client.close()
原文:http://seiya.blog.51cto.com/7515007/1725981