У меня есть внешняя функция, которая создает класс из массива, и если я хочу инициализировать класс массивом, используя ту же функцию, я попробовал эквивалент следующего кода:
class Test():
def __init__(self,x):
if type(x) == int:
self.val = x
self.next = None
elif type(x) == list:
self = build(x)
def __str__(self):
node = self
test_str = ''
while(node):
test_str += str(node.val)
node = node.next
return test_str
def build(array: list) -> Test:
root = Test(array.pop(0))
cur = root
while array:
cur.next = Test(array.pop(0))
cur = cur.next
return root
b = build([1,2,3])
print(b)
b = Test([1,2,3])
print(b)
Первая печать 123, что хорошо, вторая выдает ошибку, у объекта «Test» нет атрибута «val». Я посмотрел везде и не могу понять, как это сделать. Почему я не могу этого сделать, и как правильно добиться того, чего я хотел (кроме копирования и изменения функции сборки в init )?