只需一个简单的存款和退出帐户的程序。 我正试图通过测试它们来学习课程。
class bank:
def __init__(self):
self.origBal = 0
def deposit(self, amount):
self.origBal += amount
def withdraw(self, amount):
self.origBal -= amount
b = bank()
d = bank()
w = bank()
我可能最好从输出中看到我遇到的这个问题。
例如,这是输出。
w.withdraw(3423)
b.origBal
-3423
d.deposit(3423)
b.origBal
-3423
d.deposit(322423)
d.origBal
325846
d.deposit(3223)
d.origBal
329069
w.withdraw(324334)
b.origBal
-3423
w.withdraw(234)
b.origBal
-3423
不完全确定发生了什么。
我确信我可以通过手动输入(-n)或(+ n)来修复它,并且只有一种方法,但我想避免这种情况。
答案 0 :(得分:2)
当您b = bank()
时,您创建了一个银行。当您执行d = bank()
时,您将创建第二个银行。当您执行w = bank()
时,您将创建第三个银行。每家银行都有自己的origBal
。在三个对象之一上调用deposit
或withdraw
不会影响其他两个对象。如果你这样做
b = bank()
b.deposit(10)
b.withdraw(100)
。 。 。然后事情应该像你期望的那样工作。
您应该阅读the Python tutorial以了解课程的运作方式。
答案 1 :(得分:1)
要做你想做的事,你需要使用类变量而不是对象变量。这些是整个班级定义和使用的,如下所示。
class Bank(object):
origBal = 0
def deposit(self, amount):
Bank.origBal += amount
def withdraw(self, amount):
Bank.origBal -= amount
b = Bank()
d = Bank()
w = Bank()
w.withdraw(3423)
b.origBal
-3423
d.deposit(3423)
b.origBal
0
d.deposit(322423)
b.origBal
322423
d.deposit(3223)
b.origBal
325646
w.withdraw(324334)
b.origBal
1312
w.withdraw(234)
b.origBal
1078