isinstance :检查是否object是类cls的对象,后面可以跟创建自己的类,也可以是基类。 可用于判断excel里面的数值是否是int类型
例如:isinstance(对象,类)
issubclass:检查某个类是否是某个类的子类。
例如:issubclass(类,类)
例:
class A:
pass
class B(A):
pass
b = B()
print (isinstance(b,A)) -->True,判断b是由A创建的,
print (issubclass(B,A)) -->True,判断B类继承A类,
异常处理:
异常全部捕获:Exception
代码块:try ..... except Exception,e
e 是实例,有Exception类创建的。
例如:
try:
inn = input("input num:")
print (inn)
except Exception,e:
print (e)
异常详细的捕获:KeyError,IndexError...
例如:
try:
k = [11,22,33]
k [100]
except IndexError as e:
print (e)
先用详细的捕获错误,然后再用全部的来捕获错误信息。
raise Exception("内容"):主动触发异常,将内容封装到e中。
try:
##逻辑代码
pass
except IndexError,e:
#捕获异常
pass
except Exception,e:
##捕获异常
pass
else:
###逻辑块中未出现异常,执行此处!
pass
finally:
###不管有没有异常,都要执行。
pass
可用于 连接数据库的代码中
print 对象时,调用的是类中的__str__方法
例如:
###利用面向对象来定义错误,然后调用。
#定义错误类:AlexError
class AlexError(Exception):
#使用构造方法,往里面传参数,达到动态显示错误信息的效果
def __init__(self,messge=None):
self.message = messge
##调用此方法,返回错误信息
def __str__(self):
if self.message:
return self.message
else:
return "Alex Error"
try:
##触发错误
raise AlexError() -->不传参数 如若穿参数,则显示参数的内容
except AlexError as e:
print (e) -->显示:"Alex Error"
assert: 条件语句,判断,1、程序测试使用。2、如果满足条件就用,不满足条件就不能用。
反射:
操作内存中某个容器中的元素
getattr:去某个容器(模块)中找函数,字符串函数名。如果有,则 获取函数
hasattr:判断某个容器里面是否存在某个函数。
setattr:去某个容器里面设置某个函数。
delattr:去某个容器里面删除摸个成员。
__import__(参数):动态导入模块
例如:
import home
controller,action = input("shuru URL:").split("/") -->将模块和方法分割
module = __import__(controller) -->动态传入模块参数
func = getattr(module,action) -->查找传入的模块中是否有action
ret = func() --> 获得返回值
print (ret)
单例模式:
内存中只存在单个实例
创建一个静态字段,用来存放永远存放到内存中的那个实例。
创建一个方法,用来存放到内存中。
socket
套接字
创建socket: socket.socket()
send :发送数据到缓冲区,由缓冲区来进行处理发送
sendall:发送数据到缓冲区,立马发出去,不需要缓冲区处理
rev(1024):最大接受到的数据的size
例子:
客户端:
##导入socket
import socket
##创建socket
obj = socket.socket()
###创建连接,通过8341端口
obj.connect((‘localhost‘,8341))
####发送请求数据
obj.send("000000")
##接受返回的数据,最大size是1024
server_data = obj.recv(1024)
print(server_data)
###关闭连接
obj.close()
服务端:
##导入socket
import socket
##创建socket
obj_server = socket.socket()
###监听端口
obj_server.bind((‘localhost‘,8341))
###连接请求最大值
obj_server.listen(5)
###循环发送数据
while True:
print("waiting....")
####阻塞,等待连接
conn,addr = obj_server.accept()
###接受客户端发过来的数据,最大size为1024
client_data = conn.recv(1024)
print (client_data)
##发送数据
conn.send("111111111")
##断开与客户端的连接
conn.close()
socketserver:必须要创建一个类,类必须继承 SocketServer.BaseRequestionHandle,也必须定义一个方法handle
self.request.recv()