如何使用python维护简单的借贷对账单

如何使用python维护简单的借贷对账单,python,oop,Python,Oop,我正在使用python(oops)中的以下代码来维护贷项-借方对账单。Classdef_Cash.py文件具有程序的主结构,Cash_001.py文件具有贷项和借方代码。除了贷项和借方值没有定期更新之外,一切正常。有人能帮我吗?请参考这两个文件并运行Cash_001.py文件。”“” Classdef_Cash_001.py是第一个文件,Cash_001.py是第二个文件 class Cash: def __init__(self, DATE, VOUCHER, SPECIFIC

我正在使用python(oops)中的以下代码来维护贷项-借方对账单。Classdef_Cash.py文件具有程序的主结构,Cash_001.py文件具有贷项和借方代码。除了贷项和借方值没有定期更新之外,一切正常。有人能帮我吗?请参考这两个文件并运行Cash_001.py文件。”“”

Classdef_Cash_001.py
是第一个文件,
Cash_001.py
是第二个文件

class Cash:

       def __init__(self, DATE, VOUCHER, SPECIFICATION, INITIAL_AMOUNT, CREDIT,DEBIT, REMARKS, BALANCE):
            self.DATE = DATE
            self.VOUCHER = VOUCHER
            self.SPECIFICATION = SPECIFICATION
            self.CREDIT = CREDIT
            self.DEBIT = DEBIT
            self.REMARKS = REMARKS
            self.BALANCE = INITIAL_AMOUNT

       def Spending(self,DATE,VOUCHER,SPECIFICATION,DEBIT,REMARKS):
            self.DATE = DATE
            self.VOUCHER = VOUCHER
            self.SPECIFICATION = SPECIFICATION
            self.REMARKS = REMARKS
            self.BALANCE -= DEBIT

       def CashInflow(self,DATE,VOUCHER,SPECIFICATION,CREDIT,REMARKS):
            self.DATE = DATE
            self.VOUCHER = VOUCHER
            self.SPECIFICATION = SPECIFICATION
            self.REMARKS = REMARKS
            self.BALANCE += CREDIT

       def dump(self):
            s = 'DATE: %s, VOUCHER: %s, SPECIFICATION: %s , CREDIT: %s ,DEBIT: %s ,REMARKS :%s ,BALANCE :%s ' % \
                (self.DATE,self.VOUCHER, self.SPECIFICATION, self.CREDIT, self.DEBIT, self.REMARKS,self.BALANCE)
            print s
from Classdef_Cash_001 import Cash

p1=Cash('01/10/2018','000','CARRY FORWARD',2000,0,0,'REMAINDER','0')
p1.dump()
p1.Spending('01/10/2018','001','OIL',200,'JOHN')
p1.dump()
p1.CashInflow('02/10/2018','002','SALES',10000,'REF179800')
p1.dump()
p1.Spending('03/10/2018','003','GAS',200,'GEORGE')
p1.dump()
p1.CashInflow('03/10/2018','004','SALES',50000,'REF179801')
p1.dump()
Cash_001.py
是第二个文件

class Cash:

       def __init__(self, DATE, VOUCHER, SPECIFICATION, INITIAL_AMOUNT, CREDIT,DEBIT, REMARKS, BALANCE):
            self.DATE = DATE
            self.VOUCHER = VOUCHER
            self.SPECIFICATION = SPECIFICATION
            self.CREDIT = CREDIT
            self.DEBIT = DEBIT
            self.REMARKS = REMARKS
            self.BALANCE = INITIAL_AMOUNT

       def Spending(self,DATE,VOUCHER,SPECIFICATION,DEBIT,REMARKS):
            self.DATE = DATE
            self.VOUCHER = VOUCHER
            self.SPECIFICATION = SPECIFICATION
            self.REMARKS = REMARKS
            self.BALANCE -= DEBIT

       def CashInflow(self,DATE,VOUCHER,SPECIFICATION,CREDIT,REMARKS):
            self.DATE = DATE
            self.VOUCHER = VOUCHER
            self.SPECIFICATION = SPECIFICATION
            self.REMARKS = REMARKS
            self.BALANCE += CREDIT

       def dump(self):
            s = 'DATE: %s, VOUCHER: %s, SPECIFICATION: %s , CREDIT: %s ,DEBIT: %s ,REMARKS :%s ,BALANCE :%s ' % \
                (self.DATE,self.VOUCHER, self.SPECIFICATION, self.CREDIT, self.DEBIT, self.REMARKS,self.BALANCE)
            print s
from Classdef_Cash_001 import Cash

p1=Cash('01/10/2018','000','CARRY FORWARD',2000,0,0,'REMAINDER','0')
p1.dump()
p1.Spending('01/10/2018','001','OIL',200,'JOHN')
p1.dump()
p1.CashInflow('02/10/2018','002','SALES',10000,'REF179800')
p1.dump()
p1.Spending('03/10/2018','003','GAS',200,'GEORGE')
p1.dump()
p1.CashInflow('03/10/2018','004','SALES',50000,'REF179801')
p1.dump()

请参考下面的代码。这正是我想要的一个统一的借贷余额表。无论何时有资金流入,借方都被强制为零,无论何时有支出,贷方都被强制为零。贷方和借方仅在输出的第一行保持零,这是从上个月。这类似于有输入时禁用输出,有输出时禁用输入的概念。请运行Cash_001.py文件

   #Classdef_Cash_001.py 
   class Cash:

   def __init__(self, DATE, VOUCHER, SPECIFICATION, INITIAL_AMOUNT, CREDIT,DEBIT,
   REMARKS, BALANCE):
        self.DATE = DATE
        self.VOUCHER = VOUCHER
        self.SPECIFICATION = SPECIFICATION
        self.CREDIT = CREDIT
        self.DEBIT = DEBIT
        self.REMARKS = REMARKS
        self.BALANCE = INITIAL_AMOUNT

   def Spending(self,DATE,VOUCHER,SPECIFICATION,DEBIT,CREDIT,REMARKS):
        self.DATE = DATE
        self.VOUCHER = VOUCHER
        self.SPECIFICATION = SPECIFICATION
        self.REMARKS = REMARKS
        self.DEBIT = DEBIT
        self.CREDIT = 0
        self.BALANCE -= DEBIT

   def CashInflow(self,DATE,VOUCHER,SPECIFICATION,CREDIT,DEBIT,REMARKS):
        self.DATE = DATE
        self.VOUCHER = VOUCHER
        self.SPECIFICATION = SPECIFICATION
        self.REMARKS = REMARKS
        self.CREDIT = CREDIT
        self.DEBIT = 0
        self.BALANCE += CREDIT

   def dump(self):
        s = 'DATE: %s, VOUCHER: %s, SPECIFICATION: %s , CREDIT: %s ,DEBIT: %s 
            ,REMARKS :%s ,BALANCE :%s ' % \
            (self.DATE,self.VOUCHER, self.SPECIFICATION, self.CREDIT, self.DEBIT,
            self.REMARKS, self.BALANCE)
        print s

  #Cash_001.py
  from Classdef_Cash_001 import Cash

  p1=Cash('01/10/2018','000','CARRY FORWARD',2000,0,0,'REMAINDER',0)
  p1.dump()
  p1.Spending('01/10/2018','001','OIL',200,0,'JOHN')
  p1.dump()
  p1.CashInflow('02/10/2018','002','SALES',1000,0,'REF179800')
  p1.dump()
  p1.Spending('03/10/2018','003','GAS',200,0,'GEORGE')
  p1.dump()
  p1.CashInflow('03/10/2018','004','SALES',5000,0,'REF179801')
  p1.dump()

我们应该猜测您得到了什么结果以及您期望得到什么结果吗?不相关,但您的设计在我看来是非常错误的-您正在覆盖实例属性,而很可能希望跟踪所有操作。您确实需要两个不同的类:一个表示离散操作(应该是不可变的),并跟踪这些操作。请使用所有相关信息编辑您的帖子-您得到了什么,以及您期望得到什么。贷方和借方值不能同时为零。对于花费的现金或进入帐户的现金,贷方应为非零或借方应为非零。输出如下。日期:2018年10月1日,凭证:000,规格:结转,贷方:0,借方:0,备注:余额,余额:2000日期:2018年10月1日,凭证:001,规格:油,贷方:0,借方:0,备注:JOHN,余额:2018年10月1日,凭证:001,SP规格:油,贷方:0,借方:0,备注:约翰,余额:1800预计:日期:2018年10月1日,凭证:001,规格:油,贷方:0,借方:200,备注:约翰,余额:1800