0

クラス内にある値を加算および減算するために作成している関数の問題のビット。

csvから読み込んだ値をadd関数に渡そうとしています。この値は10進値です(例: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)

出来上がり-1つだけを期待するように言ったときの2つのパラメータ...

于 2012-06-06T22:02:57.937 に答える
0

2つの問題があるようです。

  1. メソッドの通常の定義は、「自己」引数を前提としています

    def add(self、amount):

  2. 末尾のゼロを削除しようとしている場合は、文字列を処理しているように見えます。文字列値「500.00」を浮動小数点値に変換する必要がある場合があります

    self.total = self.total + float(amount)

数値に文字列を追加しようとすると、Pythonは文句を言います。type()関数を使用して、変数に保持されているオブジェクトのタイプを確認できます。たとえば、次のようにadd()メソッド内に'amount'引数の型を出力したい場合があります(デバッグ用)。

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

それはあなたが持っているもの(str、intなど)を表示します

(ところで、メソッドの外部で変換し、メソッドに金額の数値のみを受け入れるようにする方がおそらく良いスタイルです。)

于 2012-06-06T22:12:51.540 に答える