【发布时间】:2015-04-25 13:22:00
【问题描述】:
我有 3 个类,ATM(主类)、atmFees(ATM 的子类)和交易。我想让我的类atmFees 继承父类ATM 的方法。
atmFees 类以atm 对象为参数,初始化为atm.__init__(self, balance)
我想重写父/超类的“提现”方法,修改其中一个参数——从amount 中减去 50 美分——然后用新的金额访问atm 中的超方法。
这样做会返回一个TypeError: unorderable types: atm() >= int()
我完全不知道从这里做什么,我几乎改变了所有东西,但我似乎无法让它发挥作用。
import transaction
import random
class atm(object):
def __init__(self, bal):
self.__balance = bal
self.transactionList = []
def deposit(self, name, amount):
self.__balance += amount
ndt = transaction.Transaction(name, amount)
self.transactionList.append(ndt)
def withdraw(self, name, amount):
if self.__balance >= amount:
self.__balance -= amount
nwt = transaction.Transaction(name, amount)
self.transactionList.append(nwt)
else:
print('Uh oh, not enough money!')
def get_balance(self):
return self.__balance
def __str__(self):
string_return = ""
for transaction in self.transactionList:
string_return += str(transaction) + "\n"
string_return = '\n' + 'The balance is $' + format(self.__balance, ',.2f')
return string_return
class atmFee(atm):
def __init__(self, balance):
atm.__init__(self, balance)
def widthrawal(cls, name, amount):
amount = amount - .50
atm.widthrawal(cls, name, amount)
def deposit():
pass
def main():
myATM = atm.atm(75)
fees = atm.atmFee(myATM)
fees.withdraw("2250",30)
fees.withdraw("1000",20)
myATM.deposit("3035",10)
print("Let's withdraw $40")
if myATM.withdraw("Amazon Prime",40) == 0:
print ("Oh noes! No more money!")
print()
print("Audit Trail:")
print(myATM)
main();
完整代码发布在这里: https://gist.github.com/markbratanov/e2bd662d7ff83ca5ef61
任何指导/帮助将不胜感激。
【问题讨论】:
-
如果您发布一个最小的代码示例来重现问题中的问题,您可能会得到更好的答案。但看起来应该研究一下 Python 丰富的比较方法(尤其是
__ge__)。 -
添加了发生错误的代码。我会检查比较方法。
标签: python inheritance python-3.x overriding typeerror