【发布时间】:2019-02-07 08:20:32
【问题描述】:
我已经在 Jupiter Notebook 中完成了一个熟悉的初学者 Python 项目(银行账户、流动余额——你们都会立即认出),并且运行良好。在 Jupiter Notebooks 中,余额会在存款和/或取款时更新。我想用代码制作一个带有 GUI 的应用程序,但它在我的 IDE (IDLE) 中不起作用。
我已将代码复制到 IDLE 中,如下所示:
class Account():
def __init__(self, owner, balance):
self.owner = owner
self.balance = balance
def __str__(self):
return("Account holder: {}\nBalance R".format (self.owner, self.balance))
def deposit(self, dep_amt):
self.balance = self.balance + dep_amt
def withdraw(self, with_amt ):
if self.balance >= with_amt:
self.balance = self.balance - with_amt
else:
print("insufficient funds")
cust1 = Account("Hernandez, Jose", 100.00)
print("\n", cust1)
cust1.deposit(100.00)
# cust1.withdraw(300.00)
print("\nAccount Holder: ", cust1.owner)
print("Account Balance: R", float(cust1.balance))
本来以为如果连续运行脚本,每次都会触发“cust1.deposit(100)”,余额增加100,就像我反复运行cust1.deposit(100)一样在木星笔记本中。但这不会发生。余额保持不变,为 200(初始余额 100 加上 100 存款)。
我做错了什么?
安德烈
【问题讨论】:
-
程序退出后,所有创建的对象都被删除。如果您想在多个会话期间保留帐户的状态,则必须将其保存在此代码之外,例如到数据库或文件,以保持简单。或者,为了您的学习目的,只需将
cust1.deposit放入循环中 -
在 Jupyter 中,内核一直在运行(除非它崩溃或你杀死它),所以任何变量都会持续存在。您甚至可以在底部单元格中初始化一个变量,然后在页面更上方的单元格中使用它(从而在您下次按打开顺序运行它时搞砸您的工作簿)。听起来您的 IDE 运行程序然后关闭内核。