0

我正在编写的用于添加和减去位于类中的值的函数有点问题。

我正在尝试将我从 csv 读取的值传递给我的 add 函数。这个值是一个十进制值(例如 500.00) 我已经尝试消除尾随的 0 使其只有 500,这也不起作用。我不断得到:

TypeError: add() takes exactly one argument (two given).

即使我有一个打印声明确认它只是试图通过 500。

这是我的功能:

def add(amount):
    self.total = self.total + amount

它被调用v.add(i)即使我将 i 设置为任意整数值,它仍然会导致相同的错误。我对python相对缺乏经验,所以也许我在这里缺少一些简单的东西。谢谢。

4

2 回答 2

3
class Myclass(object):
    def __init__(self, total=0.):
        self.total = total

    def add(self, amount):     # <= needs `self` parameter
        self.total += amount

v = Myclass()
v.add(2.)

当您调用对象方法时,它会隐式传递对该对象的引用 - 因此调用v.add(something)实际上调用了Myclass.add(v, something).

瞧 - 两个参数,当你告诉它只期望一个时......

于 2012-06-06T22:02:57.937 回答
0

听起来您可能有两个问题:

  1. 方法的正常定义假定“self”参数

    def 添加(自我,金额):

  2. 如果您尝试删除尾随零,您似乎正在处理一个字符串。您可能希望/需要将字符串值“500.00”转换为浮点值

    self.total = self.total + float(数量)

如果您尝试将字符串添加到数字中,Python 会报错。您可以使用 type() 函数查看保存在变量中的对象的类型。例如,您可能希望在 add() 方法中打印“数量”参数的类型,如下所示(用于调试):

print "the type of amount is", type(amount)

它会告诉你你有什么(str、int等)

(顺便说一句,在方法之外将其转换并让方法只接受数量的数值可能会更好。)

于 2012-06-06T22:12:51.540 回答