1 回顾模块3
2
3
4 静态方法
5 与类无关,不能访问类里的任何属性和方法
6 类方法
7 只能访问类变量
8 属性@property
9 把一个方法变成一个静态属性,
10 flight.status
11 @status.setter
12 flight.status = 3
13 @status.delter
14 反射
15 getattr(obj,str)
16 setattr(obj,str,val)
17 hasattr(obj,str)
18 delattr(obj,str)
19
20
21 __new__
22
23 class Foo(object):
24 def __call__()
25 print 'call'
26
27 Foo()()#执行call方法
28
29
30 __metaclass__ 用来定义这个类以怎样的形式被创建
31
32
33 try
34 ...
35
36 except (ValueError,KeyError) as e :
37
38 except Exception as e: #放在异常处理的最后面。
39
40 #断言 #assert
41 assert type(obj.name) is int
42
43 if type(obj.name)is not int :
44 exit('must be in')
45
46
47
48 else: #没有发生异常,就执行
49
50 finally, #无论如何都执行
51
52 __call__
53
54
55
56
57
58
59
60 socket
61
62 tcp/ip send,recv
63
64 udp
65
66 family address
67 AF.INET IPV4
68 AF.INET6 IPV6
69 AF.UNIX local本地
70
71 socket protocol type
72 sock.SOCK_STREAM tcp/ip
73 socket.SOCK_DGRAM 数据报式 socket , for UDP
74
75 #服务端
76
77 server = socket.socket(AF.INET,sock.SOCK_STREAM) #IPV4
78
79 server.bind(localhost,9999)
80
81 server.listen()
82
83
84 while True:
85 conn,addr = server.accept() #阻塞(等待)
86
87 while True:
88 print('new conn',addr)
89
90 data = conn.recv(1024) #8192 官方最大值8K # recv默认是阻塞的
91 if not data:
92 break #客服端已断开, xonn.recv 收到的就都是空数据,
93
94 print (data)
95
96 conn.send(data.upper())
97
98
99
100 #客户端
101
102
103 client
104 client =socket.socket()
105 client.connect(serverip,9999)
106 client.send(data)
107 client.send(data)
108 client.recv(data)