出于某种原因,我无法概念化如何使用 Checkbook.class 对象而不是“ledger [list]”试图保持我的方法 OOP。实现本准则目标的最佳实践方法是什么?(是的,我也有其他“新手”问题,但我很乐意就此获得一些意见。)
import sys
import time
transNum=0
ledger = []
debitInput=['Check Number: ', 'Transaction Date: ',
'Payee: ', 'Amount: ', 'Memo (or Enter to skip): ']
creditInput=['Check Number: ', 'Transaction Date: ',
'Source: ', 'Amount: ', 'Memo (or Enter to skip): ']
# a Payee is a persistent record/lookup of current, past and new payees
class Payee:
pass
# a Source is a persistent record/lookup of current, past and new sources
class Source:
pass
# a Checkbook is a collection of Transaction objects upon which queries may be performed
class Checkbook:
def __init__(self, newTrans):
pass
# a Transaction is a collection of Debit and Credit objects
class Transaction:
def __init__(self, chkNum, transDate, thirdParty, amount, memo=''):
self.chkNum = chkNum
self.transDate = transDate
self.memo=memo
self.thirdParty=thirdParty
self.amount=amount
self.transNum = transNum
class Debit(Transaction):
def __init__(self, *args):
Transaction.__init__(self, *args)
self.payee=self.thirdParty
del self.thirdParty
self.amount=int(self.amount)*-1
class Credit(Transaction):
def __init__(self, *args):
Transaction.__init__(self, *args)
self.source=self.thirdParty
del self.thirdParty
self.amount=int(self.amount)
while True:
transact = []
transNum += 1
choice=input('Posting debit [d], credit [c] or [x] to exit: ')
if choice == 'x': break
elif choice == 'd':
for field in debitInput:
field = input(field)
transact.append(field)
trans = Debit(transact[0], transact[1], transact[2], transact[3], transact[4])
ledger.append(trans)
elif choice == 'c':
for field in creditInput:
field = input(field)
transact.append(field)
trans = Credit(transact[0], transact[1], transact[2], transact[3], transact[4])