Day7:对象方法、异常处理、Socket

一、静态方法

1、定义:只是名义上归类管理,实际上在静态方法里访问不了类或实例中的任何属性

# 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()
View Code

二、类方法

1、定义:只能访问类变量,不能访问实例变量

# 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("")
View Code

三、属性方法

1、定义:把一个方法变成一个静态属性

# 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
View Code

四、异常处理

# 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)
View Code

五、Socket网络编程

# 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()
View Code
posted @ 2017-08-06 20:55  licy_python  阅读(90)  评论(0编辑  收藏  举报