如何在python中实现account类的转账方法
所以,我正在用python创建一个Account类。它具有存款、取款和检查余额的基本功能。不过,我在转换方法上遇到了问题。 这是我的代码(很抱歉代码转储): 现在,它适用于如何在python中实现account类的转账方法,python,python-3.x,class,oop,object,Python,Python 3.x,Class,Oop,Object,所以,我正在用python创建一个Account类。它具有存款、取款和检查余额的基本功能。不过,我在转换方法上遇到了问题。 这是我的代码(很抱歉代码转储): 现在,它适用于 abc = Account("abc", 0) abc.deposit(1000) siddharth = Account("siddharth", 159) 那么,如何运行以下代码: siddharth.transfer(11, "abc") siddharth.transfer(11, Account.abc) 此外
abc = Account("abc", 0)
abc.deposit(1000)
siddharth = Account("siddharth", 159)
那么,如何运行以下代码:
siddharth.transfer(11, "abc")
siddharth.transfer(11, Account.abc)
此外,如果帐户“abc”不存在,如何创建帐户“abc”您可以首先在某个位置声明所有帐户的数组。然后,您可以首先尝试查找帐户是否存在。如果没有,创建一个帐户并传递它们
allAccounts = []
#create bunch of accounts including 'abc'
siddharth = Account("siddharth", 159)
searchResult = [x for x in allAccounts if x.name == 'abc']
#assuming that account names are unique
if len(searchResult) == 0:
acc = Account("abc", 11)
else:
acc = searchResult[0]
siddarth.transfer(11, acc)
您的代码将是关于如何处理变量/参数命名的最佳课程。您的方法
转账(自我、金额、姓名)
应该是转账(自我、金额、账户)
。我认为现在,很明显正确的代码是
abc = Account("abc", 0)
abc.deposit(1000)
siddharth = Account("siddharth", 159)
siddharth.transfer(11, abc)
对误导性的名字要特别小心
撇开你的问题不谈,我认为账户不应该有转账方式。一个账户只关心存款和取款,而不关心用它们做什么。IMO转账应该是一个具有2个账户
参数的功能,从第一个账户中提取,在第二个账户中进行存款。这只是为了遵循单一责任原则
遵循同样的原则,不要将打印功能放在帐户中。考虑一下你不知道你的课堂将被使用的背景。如果是在web应用程序中,打印将重定向到/dev/null
最后,一定要照你说的去做。如果我有一个余额为b的账户,我希望在催缴存款金额为v后,我的账户余额将为b+v。不管v的值是多少。您检查值并且不添加负值(即撤消)是正确的,因此您必须警告调用方您不会添加值,因此引发异常。取款也一样。问题是,您编写的转账方法希望
名称
是帐户对象(您正在调用名称.余额
),而名称实际上是一个str
(“abc”
)显示如何定义转账函数,我想让函数将金额转移到同一类的另一个对象谢谢,@PatrickArtner,但解释器说“TypeError:‘int’object不可调用”'我想能够使用帐户名,而不是我给它的名称,如果这有意义的话?所以我想说Siddharth已将11转移到帐户abc Siddharth.transfer(11,abc)我只是不知道怎么做。一种方法是使用find函数在转账之前首先找到account对象。找到对象后,可以在transfer()方法中传递它。如果找不到,可以创建一个对象并在siddarth.transfer()中传递它。siddharth.transfer(11,abc)
abc = Account("abc", 0)
abc.deposit(1000)
siddharth = Account("siddharth", 159)
siddharth.transfer(11, abc)