函式只能面向程序,來回互相呼叫后順序執行,
簡單的編碼專案,還能應付的過來,
復雜的大型專案,呼叫多了,就會亂,
如何才能不亂呢,可嘗試下, 面向物件類的概念,
將現實世界的事物抽象成物件,將現實世界中事物的關系抽象成類,
即要秉著“萬物皆物件,一切皆可歸類”的中心思想,
去建立你的代碼模型,
一聽特別暈乎,我也一樣,
我學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
也可關注“武散人”微信訂閱號,隨時接受文章推送,
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/183063.html
標籤:Python
