2012年2月14日 星期二

什麼是__init__() ?

Python 使用 class 敘述來定義一個類別,而由呼叫某一類別名稱 (類似函式的呼叫方式) 而建立的新物件,被稱為該類別的一個「個體」(instance)

個體物件的設定值,可由 __init__ 這個起始函式自動完成,通常 __init__ 又被稱為類別的「建構子」(constructor)。每次有新的個體物件被建立,都會找尋 __init__ 的設定內容,自動完成新個體物件的起始設定值。

class Circle: Œ
def __init__(self): Œ
self.radius = 1 Œ
def area(self): 
return self.radius * self.radius * 3.14159 
myCircle = Circle() 
print 2 * 3.14 * myCircle.radius 
myCircle.radius = 5 Ž
print 2 * 3.14 * myCircle.radius Ž
print myCircle.area()


Œ 類別 Circle 裡有個 __init__() 函式,設定其 radius 值為 1
注意到 self 這個參數,慣例上它就是 __init__() 函式的第一個參數
 __init__ 起始設定時,self 就會被設定為新建立的個體上。
新個體物件建立後,有自己的個體變數 (instance variables),如 radius 即為一例。

Ž 個體變數的值可以重新設定
可以為個體物件設定物件方法 (method),其方式就像定義函式一般。
================================================================



class Circle:
def __init__(self, r=1):
self.radius = r
def area(self):
return self.radius * self.radius * 3.14159
c = Circle(5)
print c.area()

上述則是另一個改進版本的 Circle 類別內容設定,增加預設變數 r,並指定其預設值為 1。如此一來,我們便可透過 Circle(5) 這樣的方式來指定新個體的建立。

沒有留言:

張貼留言