Python cs架构 默认gbk编码
# struct处理后是一个数组,i4位 l8位
# json.dumps()用于将dict类型的数据转成str,
因为如果直接将dict类型的数据
写入json文件中会发生报错,因此在将数据写入时需要用到该函数。
json.loads()用于将str类型的数据转成dict。
__init__类创建时调用
__str__打印类时调用
__del__删除类时调用
__call__调用类时调用 创建对象
元类 可控制类与实例
类创建的三要素 类名 基类 名称空间 由此元类进行控制
class_name='Chinese'
# class_bases=(object,)
# class_body="""
# country="China"
# def __init__(self,name,age,sex):
# self.name=name
# self.age=age
# self.sex=sex
# def speak(self):
# print('%s speak Chinese' %self.name)
# """
# class_dic={}
# exec(class_body,{},class_dic)
class Mysqlmeta(type)继承元类特性
super(Mymeta,self).__init__(class_name,class_bases,class_dic)
#
# # 控制类Foo的调用过程,即控制实例化Foo的过程
# def __call__(self, *args, **kwargs): #self=Foo,args=(1111,) kwargs={}
# # print(self)
# # print(args)
# # print(kwargs)
#
# #1 造一个空对象obj
# obj=object.__new__(self)
#
# #2、调用Foo.__init__,将obj连同调用Foo括号内的参数一同传给__init__
# self.__init__(obj,*args,**kwargs)
#
# return obj
#
#
#
# #Foo=Mymeta('Foo',(object,),class_dic)
# class Foo(object,metaclass=Mymeta):
# """
# 文档注释
# """
# x=1
# def __init__(self,y):
# self.Y=y
#
# def f1(self):
# print('from f1')
#
#
# obj=Foo(1111) #Foo.__call__()
多路复用
单线程开启并发
server=socket.socket()
server.bind(('192.168.12.55',7676))
server.listen(3)
rd_list=[server,]
while True:
read_list,write_list,_=select.select(rd_list,[],[],1)
for i in read_list:
if i==server:
client,addre=server.accept()
read_list.append(client)
else:
try:
server_work(i)
except ConnectionResetError:
i.close()
read_list.remove(i)
break