《自拍教程36》段位三_Python面向對象類

来源:https://www.cnblogs.com/zipython/archive/2020/03/05/12423230.html
-Advertisement-
Play Games

函數只能面向過程,來回互相調用後順序執行, 簡單的編碼項目,還能應付的過來, 複雜的大型項目,調用多了,就會亂。 如何才能不亂呢,可嘗試下, 面向對象類的概念, 將現實世界的事物抽象成對象,將現實世界中事物的關係抽象成類, 即要秉著“萬物皆對象,一切皆可歸類”的中心思想, 去建立你的代碼模型。 一聽 ...


函數只能面向過程,來回互相調用後順序執行,
簡單的編碼項目,還能應付的過來,
複雜的大型項目,調用多了,就會亂。


如何才能不亂呢,可嘗試下, 面向對象類的概念,
將現實世界的事物抽象成對象,將現實世界中事物的關係抽象成類,
即要秉著“萬物皆對象,一切皆可歸類”的中心思想,
去建立你的代碼模型。


一聽特別暈乎,我也一樣,
我學Python的時候,寫了將近大半年的面向過程函數,
由於我也無法深入理解到面向對象類的概念,
當時就是無法將代碼寫成面向對象類的形式。


直到自己去慢慢學習面向對象類的概念,慢慢寫大型一點的軟體項目,
秉著“萬物皆對象,一切皆可歸類”的中心思想,
才恍然發現,面向對象類,真是好東西,
比函數嚴謹多了。。。。。

初級面向對象類的建模

小項目或小工具的代碼實現,模型比較簡單:
腦海裡虛擬一個空白的世界,想象下這個世界有哪類事物(一般是名詞),
比如我們常用的包括:學生類,員工類,課程類等。
比如我們本章節介紹的下載的腳本,如果要進行面向對象類的實現,
肯定是可以的, 雖然實際編碼過程中,我們可能用函數實現就足夠了,
但是秉著“萬物皆對象,一切皆可歸類”的中心思想。
可創建一個下載器類, 下載器的類初始化(新建一個對象)是接入一個url,
代表一個具備下載某個url的實例對象。
如下:

# coding=utf-8
import os
import requests

class FileDownloader():   #類名
    def __init__(self, url):   #類的初始化
        self.url = url

    def download_file(self):
        s = requests.get(self.url)
        file_name = self.url.split("/")[-1]
        with open(file_name, "wb") as hf:
            hf.write(s.content)
        file_path = os.path.abspath(file_name)
        print("file downloaded to %s" % file_path)
        return file_path

if __name__ == '__main__':
    fd_obj = FileDownloader("http://www.zipython.com/images/angel.mp3")
    # FileDownloader類初始化,成fd_obj對象
    fd_obj.download_file()  # 一般對象才能調用方法(函數)


高級面向對象類的建模

大項目的代碼實現,模型比較複雜,
此類建模,建議還是由專業軟體比如UML等。

類代表是具備相同屬性或方法的一種事物類別,
這種類別,一般不是真實的事物,只是虛擬出來的進行歸類而已。
所以類,一般不具有屬性和方法,
但是對象就是真實的事物,不然如何叫實例化對象呢,
所以對象,是具備屬性和方法的。

以上同學有疑問?我定義類的時候,不是寫了屬性和方法嗎?
註意咯,定義類,一般用到self, self其實是一個預設的對象,
所以:一般是實例化成對象後,才具備屬性和方法(函數),
對於測試人員,一般不鼓勵使用無需實例化的靜態方法。

更多更好的原創文章,請訪問官方網站:www.zipython.com

原文鏈接:https://www.zipython.com/#/detail?id=b685d02527274d0ca155a84fcc569d3e
也可關註“武散人”微信訂閱號,隨時接受文章推送。


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 目 錄 1. 概述... 2 2. 原有結構(帶kafka)... 2 3. 改造後的結構(去掉kafka)... 3 4. 對比... 4 1. 概述 我們主要面向鋼鐵行業工業互聯網公有雲和私有去建設,偏向PAAS層和SAAS層應用,框架是支撐這個體系建設。現在我們的公有雲的IAAS資源層使用的是 ...
  • 一、內容回顧 面向對象 單例模塊 單例模塊:設計模式 單例的應用場景 logging模塊 記錄日誌的 記錄錯誤、操作日誌 給程式員看的:①統計使用;②用來做故障排除的(debug);③記錄錯誤,完成優化代碼的。 logging.basicconig:①使用方便,②不能實現,編碼問題;不能同時向文件和 ...
  • 今日內容 1、mro演算法和super super()表示執行父類的方法。 2、正則表達式和re模塊 1. re模塊本身只是用來操作正則表達式。 (1)正則表達式 匹配字元串 表單驗證 爬蟲 (4)正則表達式規則(元字元,量詞) 3、量詞 ...
  • 一、正則常用的方法 1.match:從開始位置開始查找,一次匹配 2.sear​ch:從任何位置查找,一次匹配 3.findall​:全部匹配,返回列表 4.finditer​:全部匹配,返回迭代器 5.​split:分割字元串,返回列表 ​6.sub:替換 7.匹配中文 中文unicode編碼[u ...
  • Socket(套接字) 介紹 UDP 和 TCP 協議之前,先熟悉下 socket 的基本概念。 基本概念 Socket 是通信的基石,是支持 TCP/IP 協議的網路通信的基本操作單元,在網路通信過程中端點的一種抽象表示。網路中使用 Socket 傳輸數據是一種特殊的網路 I/O。 工作模式 打開 ...
  • qsort()函數的使用 qsort()函數是 C 庫中實現的快速排序演算法,包含在 頭文件中,其時間複雜度為 O(nlogn)。函數原型如下: 此函數需要四個參數。 第一個參數是需要排序的數組的基地址,因為是 類型,所以此函數可以給任何類型的數組進行排序; 第二個參數是待排序的數量(size_t 是 ...
  • 基於SSM開發校園外賣零食購物商城系統 開發環境: Windows操作系統開發工具: Eclipse+Jdk+Tomcat+MySql資料庫運行效果圖 源碼及原文鏈接:https://javadao.xyz/forum.php?mod=viewthread&tid=113 ...
  • 基於Struts2開發寵物領養系統的設計與實現 開發環境: Windows操作系統開發工具:MyEclipse+Jdk+Tomcat+MySQL資料庫運行效果圖 源碼及原文鏈接:https://javadao.xyz/forum.php?mod=viewthread&tid=116 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...