Я довольно новичок в Python. Здесь я создаю класс для представления структуры, похожей на blob. Тем не менее, мой код дает следующее сообщение об ошибке:Базовый класс класса Python ТипError
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)
Что я делаю неправильно здесь, и как я отказываюсь 4 входа, когда я поставляю 3?
Примечание: ошибка возникает из строки "test1.add (0, 0, 12)".
Ваши методы должны принимать себя как первый параметр .. ie def add (self, x, y, newCorrel): – AK47
Возможный дубликат [Какова цель self в Python?] (Http://stackoverflow.com)/questions/2709821/what-is-the-purpose-of-self-in-python) –
Вы должны потратить некоторое время на чтение раздела [Классы в учебнике] (https://docs.python.org/3/tutorial /classes.html#classes) - вам может потребоваться повторное его повторение несколько раз: 9.1) Имена и объекты и 9.2) Подсекции областей и пространств имен довольно важны для понимания. Если атрибут предназначен как атрибут * instance * '' 'self'', обычно используется для имени экземпляра, и он всегда является первым аргументом, переданным методу экземпляра. – wwii