物件導向多繼承, 網路基礎, 編寫網路相關的程式

2022-07-17 01:18:17 字數 3134 閱讀 5441

一. 物件導向多繼承

按繼承順序先找左再找右

經典類和新式類:

py2:

經典類 py2.2及以前, py2.2以後

新式類,如果自己或自己的前輩只要有人繼承object,那麼此類就是新式類。

py3:

新式類經典類和新式類的查詢成員的順序不一樣。經典類,一條道走到黑(深度優先)。

新式類,c3演算法實現(python2.3更新時c3演算法)。

foo = (i,b,c,d,f,g) + (g,d,g,w) + (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

# print(e.__mro__)

# print(h.__mro__)

l(foo + l(e) + l(h) )

l(e) = e,d,c,b,a,object

l(h) = h,c,b,a,g,f,object

foo = (e,d,c,b,a,object) + (h,c,b,a,g,f,object)

foo = (object) + (g,f,object)

foo,e,d,h,c,b,a,g,f,object

print(foo.__mro__)

注意事項:

super是遵循__mro__執行順序。

# ***********************************== 服務端 ***********************************==

import socket

# 建立服務端socket物件

server = socket.socket()

# 繫結ip和埠

server.bind(('192.168.13.155',8000))

# 後邊可以等5個人

server.listen(5)

print('服務端準備開始接收客戶端的連線')

# 等待客戶端來連線,如果沒人來就等。

# conn是客戶端和服務端連線的物件,服務端以後要通過該物件進行收發資料。

# addr是客戶端的位址資訊。

# #### 阻塞,只有有客戶端進行連線,則獲取客戶端連線然後開始進行通訊。

conn,addr = server.accept()

print('已經有人連線上了,客戶端資訊:',conn,addr)

# 通過物件去獲取(給我傳送的訊息)

# 1024表示:服務端通過conn獲取資料時,一次性最多拿1024位元組。

data = conn.recv(1024)

print('已經有人發來訊息了',data)

# 服務端通過連線物件給客戶端回覆了乙個訊息。

conn.send(b'stop')

# 與客戶端斷開連線

conn.close()

# 關閉服務端的服務

server.close()

# ***********************************== 客戶端 ***********************************==

import socket

client = socket.socket()

# 向服務端發起連線請求,阻塞,去連線,直到連線成功後才會繼續向下走。

client.connect(('192.168.13.155',8000))

# # 鏈結上服務端後,向服務端傳送訊息

client.send(b'hello')

# 等待服務端傳送訊息

data = client.recv(1024)

print(data)

# 關閉自己

client.close()

# ***********************************== 服務端 ***********************************==

import socket

server = socket.socket()

server.bind(('192.168.13.155',8001))

server.listen(5)

while true:

conn,addr = server.accept()

# 位元組型別

while true:

data = conn.recv(1024) # 阻塞

if data == b'exit':

break

response = data + b' asdfasdf'

conn.send(response)

conn.close()

# ***********************************== 客戶端 ***********************************==

import socket

sk = socket.socket()

sk.connect(('192.168.13.155',8001))

while true:

name = input("請輸入姓名:")

sk.send(name.encode('utf-8')) # 位元組

if name == 'exit':

break

response = sk.recv(1024) # 位元組

print(response.decode('utf-8'))

sk.close()

物件導向 多繼承

class master object def init self self.kongfu 古法煎餅果子配方 例項變數,屬性 def make cake self 例項方法,方法 print 古法 按照 s 製作了乙份煎餅果子.self.kongfu def dayandai self print ...

lua物件導向(繼承及多繼承)

還是個人感覺,lua輕量簡潔的語法,正式在於表這種類似於物件的使用,表 t 不使用 funtion t.add self,x self.a self.a x 結束t.add 5 t 使用 函式t add x self.a self.a x 結束t 新增 5 帳戶 父類 函式account new o...

php物件導向多繼承實現

在php物件導向概念程式設計中,乙個子類只能繼承乙個父類,但是從php5.4後新增traits實現 復用機制變向達到多繼承。trait 為了減少單繼承語言的限制,使開發人員能夠自由地在不同層次結構內獨立的類中復用方法集。2 trait會覆蓋繼承的方法,當前類會覆蓋trait方法 class peop...