#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]])