私はかなりPythonを初めて使い慣れました。ここでは、ブロブのような構造を表現するクラスを作成しています。しかし、私のコードは次のエラー得られます基本的なPythonクラスは、TypeErrorを返します。
TypeError: add() takes 3 positional arguments but 4 were given
class Blob:
mass = 0
xvals = []
yvals = []
correlationVal = 0
def __init__(self):
Blob.mass = 0
Blob.correlationVal = 0
def add(x, y, newCorrel):
Blob.correlationVal = computeCorrelation(newCorrel)
Blob.mass += 1
Blob.xvals.append(x)
Blob.yvals.append(y)
def computeCorrelation(newCorrel):
prevCorrel = Blob.correlationVal*Blob.mass
updatedCorrel = (prevCorrel + newCorrel)/(Blob.mass + 1)
return updatedCorrel
if __name__ == "__main__":
test1 = Blob()
print(test1.mass)
test1.add(0, 0, 12)
print(test1.mass)
print(test1.correlationVal)
test1.add(0, 1, 10)
print(test1.mass)
print(test1.correlationVal)
test1.add(1, 1, 11)
print(test1.mass)
print(test1.correlationVal)
print(test1.xvals)
print(test1.yvals)
は、私がここで間違って何をやっているが、私は3を供給したときにどのように私は、4つの入力を与えていますか?
注:エラーは、 "test1.add(0、0、12)"行から発生します。
あなたのメソッドは、最初のパラメータとしてselfを受け入れる必要があります。つまり、def add(self、x、y、newCorrel): – AK47
[自己の目的はPythonでどういうのですか?](http://stackoverflow.com/questions/2709821/what-of-the-self-in-python) –
チュートリアルの[クラス]セクション(https://docs.python.org/3/tutorial /classes.html#classes) - あなたはそれを何度も繰り返さなければならないかもしれません:9.1)名前とオブジェクトと9.2)スコープと名前空間のサブセクションは、理解するために非常に重要です。アトリビュートが*インスタンス*アトリビュートであることを意図している場合、 '' 'self''は通常インスタンスの名前として使われ、常にインスタンスメソッドに渡される最初の引数です。 – wwii