Chapter 3

20160925

大綱

  • 說明 class
  • 使用 class
  • 作業

說明class

從前面的章節,可以看見函數的目的是用來解決重複使用的程式碼,而class的目的有兩大類:

  1. 相同目的,但實作方法不同的組合
  2. 或者是用來封裝一組變數與函數的框架

這兩個意思分別是,假設在金融業,不論是個人金融,法人金融,我們都會需要用到授信, 存款, 理財等功能,同時也都會需要有存款數字,放款數字等紀錄,但這些紀錄都會分別是有相同名稱,但動作細節會有所不同,因此我們會把它們分別做成

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

results matching ""

    No results matching ""