Проблема в том, что когда вы говорите
def __init__(self,l = []):
Вы говорите Python использовать один и тот же список, []
, для каждого вызова конструктора. Поэтому каждый раз, когда вызывается obj = intlist()
, к нему добавляется один и тот же список.
Вместо этого вы должны установить для l
значение по умолчанию None
, которое является скаляром (поэтому ваш код будет работать так, как ожидается, если он будет использоваться несколько раз). Затем, если l
равно None
, инициализируйте нового члена класса как []
. В противном случае просто присвойте переменную-член l
.