Chapter 3
20160925
大綱
- 說明 class
- 使用 class
- 作業
說明class
從前面的章節,可以看見函數的目的是用來解決重複使用的程式碼,而class的目的有兩大類:
- 相同目的,但實作方法不同的組合
- 或者是用來封裝一組變數與函數的框架
這兩個意思分別是,假設在金融業,不論是個人金融,法人金融,我們都會需要用到授信, 存款, 理財等功能,同時也都會需要有存款數字,放款數字等紀錄,但這些紀錄都會分別是有相同名稱,但動作細節會有所不同,因此我們會把它們分別做成
class 個人金融:
存款金額
放款金額
存款動作
放款動作
然後法人則是
class 法人金融:
存款金額
放款金額
存款動作
放款動作
在Python裡面實作則是
class PersonalFinance:
depositAmount = 0
loanAmount = 0
def deposit(self,money):
self.depositAmount = self.depositAmount + money
return self.depositAmount
def widthdraw(self,money):
if money > self.depositAmount:
raise Exception('存款餘額不足領出')
self.depositAmount = self.depositAmount - money
return self.depositAmount
class CorporateFinance:
depositAmount = 0
loanAmount = 0
def deposit(self,money):
...
def widthdraw(self,money):
...
其中self代表的事情是,這個物件本身,如果裡面有需要用到這個物件的話,那就要使用.這個保留字來運用物件內的函數與變數,例如self.depositAmount 就是取出這個物件的depositAmount
使用 class
當宣告完class之後,就可以直接使用這個class進行工作,例如
A = PersonalFinace()
print A.deposit(100)
那這個時候就會秀出 100,表示真的有存入存款之中
作業
請設計兩個class 分別為 Queue 與 Stack,同時實作pop與push這兩個函式,範本程式碼如下:
class Queue:
tasks = []
def pop(self):
# TODO
def push(self,task):
# TODO
class Stack:
tasks = []
def pop(self):
# TODO
def push(self,task):
# TODO
測試函式
a = Queue()
a.push(1)
a.push(2)
a.push(3)
print a.pop() ==> 1
print a.pop() ==> 2
print a.pop() ==> 3
a = Stack()
a.push(1)
a.push(2)
a.push(3)
print a.pop() ==> 3
print a.pop() ==> 2
print a.pop() ==> 1