Python類與物件(實踐)(14 30)

2021-10-09 02:17:00 字數 4174 閱讀 3519

life is short,you need python !(持續更新)

在最初接觸物件導向程式設計時,你會感到有些不習慣,但這種程式設計正規化卻有助於我們思考問題,前提是你準確的理解物件導向這四個字的含義。

我們以銀行賬戶為例向你展示如何利用物件導向的程式設計方法來編寫乙個銀行賬戶,這個過程中,你將感受到物件導向程式設計與面向過程程式設計的不同。

使用者姓名(username)

賬號(card_no)

餘額(balance)

存錢(deposit)

取錢(withdrawal)

轉賬(transfer)

檢視操作記錄(history)

class bankaccount(object): 

def __init__(self, username, card_no, balance):

self.username = username # 使用者姓名

self.card_no = card_no # 賬號

self.balance = balance # 餘額

self.history_lst = # 歷史操作記錄

def deposit(self, amount):

pass

def withdrawal(self, amount):

pass

def transfer(self, another, amount):

pass

def history(self):

pass

在取錢時,如果賬戶餘額小於所取金額,那麼要提示使用者餘額不足,在轉賬的時候同樣如此。在存錢,取錢,轉賬時,都必須將業務操作記錄儲存到乙個列表中,檢視歷史記錄時,遍歷這個列表,這裡我不考慮查詢歷史記錄的時間範圍。

如果業務分析已經很透徹,我們可以像上面這樣一次性將類的全部屬性和方法都寫好,之後逐步完善,這樣做事井井有條,不至於丟三落四。不過很難一次性想清楚所有細節,因此在編碼過程中,還會逐漸補充。

不論進行何種操作,金額都必須是大於0的,因此,需要乙個判斷金額是否合法的方法。

每一次操作,都需要記錄,記錄裡必然包括操作發生的時間,因此還需要乙個獲取當前時間的方法。

@classmethod 

def is_amount_legitimate(cls, amount):

#判斷金額是否合法

if not isinstance(amount, (float, int)):

return false

if amount <= 0:

return false

return true

@classmethod 

def _get_current_time(cls):

now = datetime.now()

current_time = now.strftime('%y-%m-%d %h:%m:%s』)

return current_time

def deposit(self, amount):

#存錢

if not self.is_amount_legitimate(amount):

print('金額不合法』)

return self.balance += amount

def withdrawal(self, amount):

#取錢if not self.is_amount_legitimate(amount):

print('金額不合法』)

return self.balance -= amount

log = "取出金額".format(

operate_time=self._get_current_time(), amount=amount)

def transfer(self, another, amount): 

#轉賬self.balance -= amount

another.accept_transfer(self, amount)

log = '向轉賬'.format(

operate_time=self._get_current_time(),

username=another.username,

amount=amount)

def accept_transfer(self, another, amount): 

#接收轉賬

self.balance += amount

log = '收到轉來的'.format(

operate_time=self._get_current_time(),

username=another.username,

amount=amount)

def history(self): 

#歷史操作記錄

for log in self.history_lst:

print(log)

class bankaccount(object): 

def __init__(self, username, card_no, balance):

self.username = username # 使用者姓名

self.card_no = card_no # 賬號

self.balance = balance # 餘額

self.history_lst = # 歷史操作記錄

@classmethod

def is_amount_legitimate(cls, amount):

#判斷金額是否合法

if not isinstance(amount, (float, int)):

return false

if amount <= 0:

return false

return true

@classmethod

def _get_current_time(cls):

now = datetime.now()

current_time = now.strftime('%y-%m-%d %h:%m:%s』)

return current_time

def deposit(self, amount):

#存錢

if not self.is_amount_legitimate(amount):

print('金額不合法』)

return self.balance += amount

def withdrawal(self, amount):

#取錢if not self.is_amount_legitimate(amount):

print('金額不合法』)

return self.balance -= amount

log = "取出金額".format(operate_time=self._get_current_time(), amount=amount)

def transfer(self, another, amount):

#轉賬self.balance -= amount

another.accept_transfer(self, amount)

log = '向轉賬'.format(operate_time=self._get_current_time(), username=another.username, amount=amount)

def accept_transfer(self, another, amount):

#接收轉賬

self.balance += amount

log = '收到轉來的'.format(operate_time=self._get_current_time(), username=another.username,amount=amount)

def history(self):

#歷史操作記錄

for log in self.history_lst:

print(log)

Python 類與物件

引數 預設值 可變引數 關鍵字引數 命名關鍵字引數 返回值 python class student def init self,arg,kwargd 可變引數 arg kwargd if name in kwargd self.name kwargd name defmain s student ...

Python 類與物件

python是一種物件導向的程式語言。python中,幾乎所有東西都是乙個物件。物件有屬性和方法。類是用於建立物件的 藍圖 要建立類,請使用關鍵字class 示例 建立乙個名為myclass的類,其屬性名為x class myclass x 8現在可以使用myclass類建立物件 示例 建立乙個名為...

Python 類與物件

一.一 類 是對一群有相同特徵或者行為的事物的統稱,是抽象的,不可直接使用。二 物件 是由類創造出來的實體,可以直接使用。三 類與物件之間的關係 1.先有類再有物件 2.類只有乙個而物件可以有多個 四 類的設計 3要素 類名 大駝峰命名法 屬性 描述這類事物的特徵 方法 描述這類事物的具體行為 二....