python3中對 物件導向 的一些理解(基礎)

2021-08-08 02:44:52 字數 2359 閱讀 8788

物件導向出來乙個新概念 類也就是class 乍看上去像乙個函式 。其實我就可以這麼理解 這是乙個大函式,裡面定義的各種函式其實就是小函式

那麼問題來了,為什麼好好的函式不用 非要定義乙個類?其實很簡單 ,在面對乙個大工程的時候。一些資料是通用的,我們把這些通用的歸為一類則就形成了

class。顧名思義 類就是把所有相同屬性的整合一起,俗話說 物以類聚,人以群分嘛

說了這麼多 其實並沒有切題。這裡自己用自己的話剖析以下。

我們把類看成乙個服裝加工廠(就叫他服裝加工類吧)。class(object):

那麼有了加工廠 我們需要對外賣衣服吧。可能冬天我只賣羽絨服 但是夏天衣服這麼暴力,我不光賣上衣 還賣褲子,鞋子。那麼怎麼表示我賣的東西呢

__init__(self,xiezi,kuzi,shangyi):函式應運而生。大家可能看程式的時候會注意到不同程式init裡面的變數有時候是乙個有時候是幾個 ,這個是怎麼回事呢。

其實定義乙個類主要看你解決什麼問題。我們把你解決什麼問題比作季節 變數多的問題就是夏天 變數少的就是冬天。你比如最後輸入為

list_info = listinfo([44,222,111,333,454,'sss','333'])

輸入只有乙個變數 就是乙個列表,我們就定義 乙個變數 相當與是冬天服裝廠加工衣服

zm =student('zhangming',20,[69,88,100])  

這裡變數有字串 整形和列表 我們就定義了三個變數 相當與夏天賣衣服

說這麼多你這個init什麼用 難道只是定義變數的?

其實不然,init函式最大的作用就是把外面的引數傳進來 然後貼上自己的標籤 就像這個服裝加工廠一樣 我造的所有衣服 都印有我廠的標籤。

用之前學過的知識來說 在class範圍內 定義全球變數 如下self.name=name這麼已說明 外部變數就傳入內部來了

def__init__(self,name,age,score):

self.name=name    #name,age,score這三個外部變數,通過self.name這樣的變換,相當與把外部變數傳入了class內部。

self.age=age      #self.name則可以在內部呼叫了。呼叫name這變數了 。相當與函式的區域性變數變成全域性變數。

self.score=score

有了這些變數 我們就可以對class的其他函式進行傳入引數處理

有了這些準備 ,我們就還差乙個地方就可以明白了。那就是各個不同的車間(函式)裡面又有引數是怎麼一回事呢?

def del_key(self,numm):

self.numm=numm

del self.num[self.numm]

return self.num

如上程式 又多出來乙個numm 這又是咋回事呢  和init定義的引數又有什麼聯絡呢?

其實我們學過函式都知道函式需要定義變數,這裡也是一樣 這裡想要處理函式必須引入乙個變數。

雖然我們知道了,但是這個變數和init定義的變數有什麼區別和聯絡呢

聯絡肯定有的 就像我們造衣服的工具 生產夏天上衣的機器和生產冬天的機器肯定不一樣 這裡的機器就可以比作兩個函式的變數

不同  init相當與把外部變數傳入class中 相當與全域性變數  函式中變數就是以前的函式變數一樣 用來出來具體問題引出來的 引用的話

可以用self.value

廢話說了這麼多 看兩個個具體的程式

class student(object):

def __init__(self,name,age,score):

self.name=name    #name,age,score這三個外部變數,通過self.name這樣的變換,相當與把外部變數傳入了class內部。

self.age=age      #self.name則可以在內部呼叫了。呼叫name這變數了 。相當與函式的區域性變數變成全域性變數。

self.score=score

def get_name(self):

return self.name  #這裡返回self.name 相當與返回name一樣 之所以不直接寫name是因為,在這個類的

# 全域性變數為self.name  name只是通過class傳入的。

def get_age(self):

return self.age

def get_score(self): #直接把score看成下面的列表操作就可以了,什麼型別的就是什麼型別操作

return max(self.score)

zm = student('zhangming',20,[69,88,100])   #把student例項化 

print(zm.get_score(),zm.get_name(),zm.get_age())  #通過class.method()方法進行操作

Python 3 物件導向 一

一 面向過程 物件導向 面向過程 根據業務邏輯從上到下堆疊 即先幹什麼再幹什麼,基於面向過程去設計程式就好比在設計一條流水線,是一種機械式的思維方式 函式式 將某功能 封裝到函式中,日後便無需重複編寫,僅呼叫函式即可 物件導向 對函式進行分類和封裝,讓開發 效率高更高,更快 物件導向優點 解決了程式...

python3物件導向

類 class 描述同屬性和方法的物件的集合。方法 類中定義的函式 例項化 建立乙個類的例項,類的具體物件。物件 通過類定的資料例。包括兩個資料成員 類變數和例項變數 和方法。支援操作 屬性引用和例項化 class myclass i 12345 deff self return hello wor...

Python3 物件導向

類名 這類事物的名字,滿足大駝峰命名法,每乙個單詞的首字母大寫 屬性 這類事物具有什麼樣的特徵,身高,體重,年齡等 方法 這類事物具有什麼樣的行為,會跑,會說話,會跳等 class cat 名字貓的類,建議用大駝峰 def init self,new name,new age self.name n...