有分 instance 跟 static,那麼 function當然就也有分instance 跟 static。
static function 呢,就一樣,好,它也是屬於class,而不是屬於 object 的。
那當然對 function 來說,你可能要把觀念弄得更清楚才行。
就算是 instance function,它們呢,也是寫在 class 裡面的嘛。
好,所以所謂的屬於 object 的意思是說,不同的 object 去呼叫同一個
instance function,跑出來的結果會不太一樣,對吧??因為大家存取各自的
instance variable 值不同,結果自然就可能會不一樣。
那麼今天 static function 呢 就是專屬於 class 的,所以它們裡面是不能去存取 instance variable 的。
好,它只會存取 static variable。
那麼在這個情況下呢,我們就說它是一個 static function,那 static
function 自然就也不應該由 object 來呼叫,應該要由 class 來呼叫才對。
那麼 static function 和 instance function 它們就合稱為 member function 這樣。
所以呢 這裡是一個例子,那我們今天呢,這個 static function 也得要寫在
class 裡面,所以我們怎麼區別? 區別的方式是我們在 static
function 的前面,要加上一個所謂的 @staticmethod
這樣的一個 decorator,其他的話呢,就幾乎都一樣了。
那我們加上那一行,就是在跟我們的這個 interpreter
說,誒,我們現在接下來要寫的這個東西是一個 static function 噢,這樣子。
那麼在這個情況下,我們來看一下我們這裡在寫什麼,我們寫的是說,呃,給我一個值去把 Date
的 double digit update 成那個樣子。
那所以我們在這裡在執行的時候呢,就變成 date 的 setDoubleDigit true 這樣。
那麼這個時候呢 當然就是我們理想狀態下,應該要用 date 去呼叫
大家就會很明確地知道,噢,這個函數是一個 static function。
而且這個函數,好,它會處理到 或者是會使用到的變數,一定是 static variable 這樣子。
那這樣寫起來,這個程式就很清楚了。
那我們今天如果你硬要的話,你用一個 object 去呼叫
也可以,這不是很奇怪,因為你 static function,呃,對不起
instance function 也可以存取 static variable,不奇怪。
那這樣寫固然也可以,不過呢希望 你不要這麼做,因為你這麼做的話,看程式碼的人很容易就會以為這是一個
instance function。
但其實不是,它是 static function,它的性質是特別的,所以你最好能夠 Highlight 說這是一個 static function。
才能夠讓大家比較知道它到底在幹嘛。
所以以上呢,就是我們關於class的基本介紹。
class 的用途一開始是很明確的,把變數包一包嘛,就很像是幫
變數取名字的 list,比如說了,那當然它的任務不僅於此 它呢。
還可以包 operations,所以你可以寫 instance function。
那有了 function 了以後,每一個 object 就像是一個活生生的個體啦
它裡面有內容,它還有運算這樣子,所以我們進入漸漸地要進入 object-oriented programming 的概念。
我們的程式設計是以 object 間的互動為主體,好運算很多也都要變成以 object 為主體。
然後呢,後面我們又介紹了 static variables 跟 statitc functions。
好,然後 constructor 啊之類的。
好,所以這是關於class的部分。
[音樂] [音樂]
[音樂]