KULINAR847
# А если раскомментировать строку ниже то ошибка ? - b 664error #super().__init__(n)
а какой результат вы ожидаете? у вас тут бесконечная рекурсия , рано или поздно вы получите maximum recursion depth exceeded.
когда вы делаете super().__init__(n) то вы вызываетет метод __init__ родителя для инстанса класса В(потомка), а когда делаете A(n) то создаете новый инстанс класса А.
Соотвевенно в классе В вы не передаете конструктору(алокатору?) __new__ никаких аргументов :
return super(B, cls).__new__(cls)
поэтому в А.__new__ счетчик-ограничитель не срабатывает, а срабатывает вто это
if (len(args) == 0):
return super(A, cls).__new__(cls)
вот оно вам и колбасит код до бесконечности, а когда вы далаете A(n) то А.__new__ вы вызываете с аргументом и срабатывает код:
if int(args[0]) < 5:
return super(A, cls).__new__(cls)
else:
return 0
и рекурсия прерывается.
Надеюсь понятно объяснил.
чтобы ограничитель срабатывал нужно вызывать конструктор класса А с соответствующими аргументами:
return super(B, cls).__new__(cls, *args)