1. 程式人生 > >第三模塊--不會的知識點整理

第三模塊--不會的知識點整理

返回 序列 包括 clas 9.1 實現 廣度 反射 上傳下載

1、繼承的實現原理:深度優先,廣度優先

print(F.__mro__)

2、組合指,在一個類中以另外一個類的對象作為數據屬性

3、抽象類:從一堆類中抽取相同的內容而來的,包括數據屬性和函數屬性,只能被繼承,不能被實例化,------歸一化設計

import abc
class All_file(metauclass=abc.ABCmeta):
    all_file=file
    @abc.abctractmethod
    def read(self):
        pass

4、封裝的概念

5、多次序列化到文件,讀取出來是怎麽樣

6、instance(obj,cls)檢查是否obj是類cls的對象

7、反射的概念

8、元類的概念

9、網絡編程中解決粘包問題的兩種形式:

9.1、遠程執行服務端系統命令:

(1)引入subprocess模塊與系統交互---引入管道的知識

(2)引入struct模塊,先發報頭的長度,再發報頭(客戶端根據接受完整的報頭得到裏面存儲的文件長度)

 obj = subprocess.Popen(cmd.decode(‘utf-8‘), shell=True,
                                   stdout=subprocess.PIPE,
                                   stderr=subprocess.PIPE)

            stdout=obj.stdout.read()  # 字節類型
            stderr=obj.stderr.read()  # 字節類型

#3、把命令的結果返回給客戶端 #第一步:制作固定長度的報頭 header_dic={ ‘filename‘:‘a.txt‘, ‘md5‘:‘xxdxxx‘, ‘total_size‘: len(stdout) + len(stderr) # 字節的長度 -------- 文件的大小 } header_json=json.dumps(header_dic) header_bytes=header_json.encode(‘utf-8‘) #第二步:先發送報頭的長度 conn.send(struct.pack(‘i‘,len(header_bytes))) # len(header_bytes)發送信息給客戶端的字節長度 #第三步:再發報頭 conn.send(header_bytes) # 客戶端發兩次 #第四步:再發送真實的數據 conn.send(stdout) conn.send(stderr)

 可以直接打包 發送數據的長度-----客戶端解壓依次即可

也可以間接發送數據的長度 先發head_dic報頭長度,再發報頭,,客戶端解壓報頭 得到報頭裏面的數據長度

9.2、上傳下載文件os.path.getsize(pt_path),文件的大小--字節的長度 --<class ‘int‘>

file_size = os.path.getsize(pt_path)
print(file_size,type(file_size))
290 <class ‘int‘>

技術分享圖片

技術分享圖片



第三模塊--不會的知識點整理