python Day8
#isinstance
n = 1
print isinstance(n,int) #n是对象,int是类,这里的类是基类,条件也成立
#issubclass
class A:
pass
class B(A):
pass
print issubclass(B,A) #查看B是否是A的派生类
###异常处理
try:
#正常逻辑代码
inp = raw_input(">>")
data = int(inp)
# raise Exception('123123')
except Exception,e: #Exception捕获所有error 可以指定捕获error类型,如KeyError NameError
#逻辑代码执行错误时执行
print "请输入数字",e
else:
#逻辑代码没有错时执行
pass
finally:
#不管逻辑代码结果,永远执行
pass
#自定义异常处理
class TestError(Exception):
def __init__(self,msg=None):
self.message = msg
def __str__(self): #print 对象 返回__str__的结果
if self.message:
return self.message
else:
return "test error"
try:
raise TestError('error')
except Exception,e:
print e
###assert 断言 如果条件都满足继续执行
###getattr 反射
home.py
def f1():
return "f1"
def f2():
return "f2"
def f3():
return "f3"
def f4():
return "f4"
def f5():
return "f5"
main.py
import home
print 'url----'
url = raw_input('>>')
controller,action = url.split('/')
modlus = __import__(controller)
try:
func = getattr(modlus,action)
ret = func()
print ret
except Exception,e:
print "404"
##webdemo
from wsgiref.simple_server import make_server
def RunServer(environ, start_response):
start_response('200 OK', [('Content-Type', 'text/html')])
url = environ['PATH_INFO']
temp = url.split('/')[1]
import home
is_exist = hasattr(home, temp) #hasattr 判断容器是否有这个成员
if is_exist:
func = getattr(home, temp) #getattr 获取某个容器的成员
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()
###getattr,setattr,delattr,hasattr 操作内存中某个容器中的元素
import home
print dir(home)
print hasattr(home,'dev')
print getattr(home,'f1')
setattr(home,'f8','ffff8')
delattr(home,'f5')
print dir(home)
###socket
import socket
def main():
# 创建socket对象
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
# 监听端口
sock.bind(('127.0.0.1',8909))
# 开始监听,
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()