Day7:对象方法、异常处理、Socket
一、静态方法
1、定义:只是名义上归类管理,实际上在静态方法里访问不了类或实例中的任何属性
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
# Author:licy class Dog(object): def __init__(self,name): self.name=name @staticmethod #它实际上和类没有什么关系 def eat(self,food): print("%s正在吃%s" % (self.name,food)) def play(self): print("%s正在玩足球" % self.name) d=Dog("licy") d.eat(d,"米饭") d.play()
二、类方法
1、定义:只能访问类变量,不能访问实例变量
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
# Author:licy class Dog(object): n=111 def __init__(self,name): self.name=name @classmethod def eat(self,food): print("%s正在吃%s" % (self.n,food)) d=Dog("licy") d.eat("屎")
三、属性方法
1、定义:把一个方法变成一个静态属性
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
# Author:licy class Dog(object): def __init__(self,name): self.name=name self.__food=None @property def eat(self): print("%s正在吃%s" % (self.name,self.__food)) @eat.setter def eat(self,food): self.__food=food print("set to food:",food) @eat.deleter def eat(self): del self.__food print("删除了") d=Dog("alex") d.eat="屎" d.eat del d.eat
四、异常处理
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
# Author:licy data={} names=["licy"] try: names[3] data['name'] # except KeyError as e: # print("没有这个key",e) # except IndexError as e: # print("列表操作错误",e) # except (KeyError,IndexError) as e: # print("错误",e) except Exception as e: print("出错了",e)
五、Socket网络编程
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
# Author:licy #客户端 import socket client=socket.socket() #声明socket类型,同时生成socket连接对象 client.connect(('localhost',6969)) while True: msg=input(">>:").strip() client.send(msg.encode("utf-8")) data=client.recv(1024) print("reve:",data.decode()) client.close() # Author:licy #服务器端 import socket server=socket.socket() server.bind(('localhost',6969))#绑定要监听的端口 server.listen()#监听 print("开始等电话") conn,addr=server.accept()#等待 print(conn,addr) print("电话进来了") while True: data=conn.recv(1024) print("recv:",data) conn.send(data.upper()) server.close()