多繼承c3算法與網路編程
阿新 • • 發佈:2018-09-04
一個 方式 切換 時也 lose 成功 pytho 進程調用 bject
- 一、多繼承c3算法
- 1、經典類與新式類
- 在python2之中,可以編寫經典類和新式類,但是在python3之中編寫的都是新式類
- 新式類,若自己和自己的前輩但凡有一個繼承object,那麽此類則為新式類
- 2、經典類和新式類的查找方法
- 經典類,深度優先的查找方式,即一條路走到黑,在先左後右的大方針之下,每一條查找到底在切換另一條線路
- 新式類,c3算法,使用Foo.__mro__可以查看Foo類的繼承順序,和__super__類似
- 3、c3算法
- 首先我們需要將每一條線路都寫出來,大方針還是由左至右,ru:Foo:Foo+(B,C,D,F,G)+(I,G,D,G,W)
- 獲取其中第一個括號的表頭,和其他表的表中除開表頭的類比較,沒有相同的就放在繼承裏面,如果純在就不變,使用下一個表的表頭進行比較
class A(object): pass class B(A): pass class C(B): pass class D(object): pass class E(D,C): pass class F(object): pass class G(F): pass class H(C,G): pass class Foo(E,H): pass """ L(Foo + L(E) + L(H) ) L(E) = E,D,C,B,A,object L(H) = H,C,B,A,G,F,object Foo = (object) + (G,F,object) Foo,E,D,H,C,B,A,G,F,object """
- 1、經典類與新式類
- 二、網路編程
- 1、架構的分類:
- 1、C/S架構,有客戶端的架構,client---》server
- 2、B/S架構,沒有客戶端,在網站上的架構,browser----->server
- 2、如何進行數據交互
- 1、內部局域網類:交換機會分配至多256個ip地址(windows查ip:在cmd中輸入ipconfig;mac中查ip在終端中輸入:ifconfig。
- 2、公網ip則需要花錢租借
- 3、相互通訊的本質還是互相發送高低電頻
- 3、網路編程socket模塊
- 1、服務端
- 首先創建socket模塊. server=socket.socket( )
- 綁定一個ip地址.server.bind( ( ip地址,端口號) ),端口號是自己設置的,客戶端需要提供一致的端口號才能進行通行,不同的進程調用的端口號不一樣
- 設置最大隊列人數:server.listen( 數量)
- 然後便可以等待客戶來連接,ret = server.accpept( ),此刻程序會陷入一個阻塞,若是一直未有客戶端成功連接便會一直等下去
- 若是有客戶連接,程序便走下去,此刻我們打印這個ret,會得到一個元組,裏面有兩個元素,第一個是客戶端與服務端連接的對象,通常我們會使用conn來接他,另一個是客戶端的地址信息,通常我們會用addr來接收它
- conn叫全雙工管道,可以簡單的理解為一個傳送介質,需要知道的事,這個介質是有客戶端提供
- 接下來我們便可以進行收發信息,接受信息時也會有阻塞,data=conn.recv(裏面是服務端通過介質獲取信息時,一次性最大的獲取量,一般設置為1024字節);發送消息為,conn.send(必須是字節型),而且記住,有發必須有收,在客戶端和服務端收發必須相互對應,不然程序便會堵塞
- 最後記得關閉介質conn.close( )
- 關閉服務器需使用server.close( )
- 2、客戶端
- 1、同樣是先建立客戶端client=socket.socket( )
- 2、client.connect( ( "服務器地址",端口號) ),向服務端發送鏈接請求,程序走到這同樣會有阻塞,會一直嘗試鏈接知道鏈接成功
- 3、client.send(字節類型),發送消息,data=client.recv( 1024),收消息
- 4、關閉客戶端client.close( )
- 3、在py3中,收發信息默認的都是字節數,在py2中默認的收發的都是字符串,這是由於py3中字符串默認為unicode,故發送字節更加節約空間
- 1、服務端
- 1、架構的分類:
多繼承c3算法與網路編程