Метод __init__()
для вашего класса требует 3 позиционных параметра (в дополнение к self
), но ваш код передает только один - список чисел, введенных пользователем. Вам нужно передать каждое из этих чисел в качестве отдельного аргумента. Вы можете использовать оператор *
, чтобы распаковать элементы в списке и передать их как отдельные аргументы:
my_class2 = my_class(*[float(input("Enter number %s: "%i)) for i in range(3)])
Это решит насущную проблему, однако, было бы более гибко, если бы ваш класс принял список чисел, привязав его к атрибуту объекта. Ваш метод усреднения вычислял бы среднее значение, используя список, или он мог бы просто использовать statistics.mean()
:
from statistics import mean
class my_class(object):
def __init__(self, numbers):
self.numbers = numbers
def defAvrg(self):
return mean(self.numbers)
Преимущество этого подхода заключается в том, что вы можете получить произвольное количество значений от пользователя.