作者:2335286cc | 来源:互联网 | 2023-10-14 17:21
一、内容回顾
1、两个内置函数(装饰器)及类中的魔术方法
@classmethod
修改绑定方法为类方法,调用方式可以是实例名.方法名()或者类名.方法名()
class Person:
   County = "中国"
   def __init__(self,name):
       self.name = name
   @property  #修改绑定方法的调用方式与实例变量一样,无需加括号
   def get_name(self):
       return self.name
   @classmethod  #绑定方法修改成类方法,并且调用方式可以是实例名.方法名()或者类名.方法名()
   def new_person(cls):
       return cls.County +"万岁"
   def hoby(self):
       return "地下城"
p = Person("alex")
print(p.get_name)
print(Person.new_person())
print(p.new_person())
s = 'hoby'
if hasattr(p,s): #判断对象是否存在
   if callable(getattr(p,s)): #判断对象是否可以被调用
       print(getattr(p,s)())  #获取方法并加括号实现方法的调用
@staticmethod 可以用对象和类调用
hasattr:判断内容是否在对象中
getattr :获取对象的内容
callable :判断对象是否可以被调用
class Person:
   County = "中国"
   def __init__(self,name):
       self.name = name
   @property  #修改绑定方法的调用方式与实例变量一样,无需加括号
   def get_name(self):
       return self.name
   @classmethod  #绑定方法修改成类方法,并且调用方式可以是实例名.方法名()或者类名.方法名()
   def new_person(cls):
       return cls.County +"万岁"
   def hoby(self):
       return "地下城"
p = Person("alex")
print(p.get_name)
print(Person.new_person())
print(p.new_person())
s = 'hoby'
if hasattr(p,s): #判断对象是否存在
   if callable(getattr(p,s)): #判断对象是否可以被调用
       print(getattr(p,s)())  #获取方法并加括号实现方法的调用
双下划线new **非常重要***** 构造方法,开辟空间,实例化对象的时候在init之前执行
##########################单例模式##################
Class Person:
   _instance = None
   def __new__(cls,*args,**kwargs):
       print("调用我啦")
       if Person._instance is None:
           Person._instance = super().__new__(cls)
           print("开辟一个空间了哦")
           return Person._instance
   def __init__(self):
       print("执行我啦")
p1 = Person()  ###"调用我啦" ——》"开辟一个空间了哦"——》"执行我啦"
p2 = Person()  ###"调用我啦"
双下划线call:只要类中有这个call方法,这个类的对象就可以加括号
双下划线len 只要类中有这个方法,可以直接len函数来操作类 len(类名)
双下划线str :只要类中有这个方法,打印对象的时候,%s做拼接的时候,str做强制转换的时候,调用这个方法,打印这个方法的返回值
双下划线repr:str的备胎,%r或者repr的时候就显示这个方法的返回值
二、今日内容
1、网络基础相关的概念
2、地址解析协议:arp协议
3、网络编程信息交互
#############server端################
import  socket
sk = socket.socket()
sk.bind(('127.0.0.1',9001))
sk.listen()
conn,addr = sk.accept()
conn.send(b'hello')
msg = conn.recv(1024)
print(msg)
conn.close()
sk.close()
?
#############client端#######################
import socket
sk = socket.socket()
sk.connect(('127.0.0.1',9001))
msg = sk.recv(1024)
print(msg)
sk.send(b'byebye')
sk.close()
4、os七层协议(应表会传网数物)
5、tcp与udp协议
tcp:
需要建立联接,才能通信
占用连接,可靠的传输,消息不会丢失,实时性高
建立联接——三次我握手
 
 
断开联接——四次挥手
 
 
udp:
不许需要建立连接,就可以通信
不占用联接
不可靠的传输,消息可能丢失