Ich bin ziemlich neu in Python. Hier erstelle ich eine Klasse, die eine blobartige Struktur darstellt. Allerdings ergibt sich mein Code der folgende Fehler:Grundlegende Python-Klasse liefert 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)
Was mache ich falsch hier tun, und wie kann ich geben 4 Eingänge, wenn ich 3 liefern?
Hinweis: Der Fehler ergibt sich aus der Zeile "test1.add (0, 0, 12)".
Ihre Methoden sollten sich selbst als erster Parameter akzeptieren .. dh def add (self, x, y, newCorrel): – AK47
Mögliches Duplikat von [Was ist der Zweck von self in Python?] (Http://stackoverflow.com/questions/2709821/was-ist-der-Zweck-von-selbst-in-Python) –
Sie sollten einige Zeit damit verbringen, den [Klassen-Abschnitt im Tutorial] (https://docs.python.org/3/tutorial) zu lesen /classes.html#classes) - Sie müssen es möglicherweise mehrmals wiederholen: 9.1) Namen und Objekte und 9.2) Scopes und Namespaces Unterabschnitte sind ziemlich wichtig zu verstehen. Wenn ein Attribut ein Attribut * instance * sein soll, wird '' self''' normalerweise für den Namen der Instanz verwendet und ist immer das erste Argument, das an eine Instanzmethode übergeben wird. – wwii