d27网络编程

补充:

面向对象三大特性:封装,继承,多态

d27网络编程
from json import JSONEncoder,JSONDecoder
import json
from datetime import datetime,date
res = {'c1':datetime.today(),'c2':date.today()}
# a = datetime.today()
# 有time 就是年月日 时分秒
# b = date.today()
# 没有就是 年月日
# print(a)
# print(b)
print(json.dumps(res))
例子 d27网络编程
# 出现报错   TypeError: Object of type 'datetime' is not JSON serializable

# 想可以得到序列化内容
# 在用dumps序列化=时 注意cls参数  如果不设置,则默认使用 JSONEncoder
# json.JSONEncoder  查看default方法
# self 为对象本身  o  为传入的对象

class MyJson(JSONEncoder):
    def default(self, o):
        if isinstance(o,datetime):
            # 格式化时间
            return o.strftime('%Y-%m-%d %X')
        elif isinstance(o,date):
            return o.strftime('%Y-%m-%d')
        else:
            return super().default(self,o)
res = {'c1':datetime.today(),'c2':date.today()}
print(json.dumps(res,cls = MyJson))
View Code

__call__

d27网络编程
在普通类中  ,在调用对象时自动执行,(既对象加括号)

在元类中,当你调用类对象时会自动调用元类中的__call__方法 ,并将这个类本身作为第一个参数传入,以及后面的一堆参数

覆盖元类中的call之后,这个类就无法产生对象,必须调用super().__call__来完成对象的创建  ,并返回其返回值 

使用场景:

当你想要控制对象的创建过程时,就覆盖__call__方法

当你想要控制类的创建过程时,就覆盖__init__方法
View Code

网络编程

### 网络编程

:编写基于网络应用程序的过程

### 软件开发架构

c/s     client /server     客户端/服务端

b/s   browser/server    浏览器/服务器

b/s 架构本质也是c/s架构

服务端:24小时不间断的提供服务

客户端:随时都可以访问数据

  

两台计算机要想通讯,必须要具备两个基本要素

1.物理连接介质,包括网线,无线电,光纤等

2.通讯协议

 

OSI协议

OSI: open System Interconnection Reference Model,开放式系统互联通信参考模型

OSI七层模型

​		应用层

​		表示层

​		会话层

​		传输层

​		网络层

​		数据链路层

​		物理连接层

 

OSI五层模型

​		应用层

​		传输层

​		网络层

​		数据链路层

​		物理连接层

  

1.物理连接层

基于电信号传输010101 的二进制数剧

 

上一篇:Python常用模块:date、datetime、calendar


下一篇:JavaScript 展开运算符