Ошибка аргумента в методе класса matrix — Python

#python #class #methods #arguments

#python #класс #методы #аргументы

Вопрос:

Я создаю класс matrix в python 3 (пока у меня есть только один метод создания):

 class Matrix() :
    __rows = []
    __columns = []
    def SetRows(self,rows) :
        self.__rows = rows
        i = 0
        while i < len(rows[0]) :
            a = []
            j = 0
            while j < len(rows) :
                a.append(rows[j][i])
                j  = 1
            self.__columns.append(a)
            i  = 1
m = Matrix
m.SetRows([[0,8,56],[98,568,89]])
  

Но это дает эту ошибку:

 Traceback (most recent call last):
  File "f:PARSAProgrammingPython2-11-2.py", line 14, in <module>
    m.SetRows([[0,8,56],[98,568,89]])
TypeError: SetRows() missing 1 required positional argument: 'rows'
  

Я ввел аргумент ‘rows’. Очевидно, мне не нужно вводить «self». Я использую VS Code для IDE. Спасибо за вашу помощь.

Ответ №1:

С вашей функцией все в порядке.

Вы просто забыли скобки при создании экземпляра m=Matrix() . Итак, интерпретатор считает, что вам нужно указать self , поскольку он не распознал класс.

РЕДАКТИРОВАТЬ: я только что распознал другую проблему. Вы фактически создали бесконечный цикл с этими while циклами. Если вы не добавляете-присваиваете i и j, они всегда будут оставаться ниже len(rows[0]) и len(rows) соответственно.

Итак:

 class Matrix() :
    __rows = []
    self.__columns = []
    def SetRows(self,rows) :
        self.__rows = rows
        i = 0
        while i < len(rows[0]) :
            a = []
            j = 0
            while j < len(rows) :
                a.append(rows[j][i])
                j  = 1
            self.__columns.append(a)
            i  = 1

m = Matrix()
m.SetRows([[0,8,56],[98,568,89]])