一. 物件導向多繼承按繼承順序先找左再找右
經典類和新式類:
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...