標籤:尋找 lis 連接埠號碼 ipconfig python class 順序 bsp row
- 一、多繼承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): passclass B(A): passclass C(B): passclass D(object): passclass E(D,C): passclass F(object): passclass G(F): passclass H(C,G): passclass Foo(E,H): pass"""L(Foo + L(E) + L(H) )L(E) = E,D,C,B,A,objectL(H) = H,C,B,A,G,F,objectFoo = (object) + (G,F,object)Foo,E,D,H,C,B,A,G,F,object"""
- 二、網路編程
- 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,故發送位元組更加節約空間
多繼承c3演算法與網路編程