Уведомления

Группа в Telegram: @pythonsu

#1 Сен. 20, 2019 09:56:00

KULINAR847
Зарегистрирован: 2019-09-20
Сообщения: 18
Репутация: +  0  -
Профиль   Отправить e-mail  

super() вопрос [python3]

   
class A:
	def __new__(cls, *args):							
		if (len(args) == 0):
			return super(A, cls).__new__(cls)
		
		if int(args[0]) < 5:
			return super(A, cls).__new__(cls)
		else:
			return 0
	def __init__(self, n):
		n = n + 1
		print('a ' + str(n))
		B(n)
	
class B(A):
	def __new__(cls, *args):							
		return super(B, cls).__new__(cls)
	
	def __init__(self, n):
		n = n + 1
		print('b ' + str(n))
		try:
			# Почему если раскомментировать эту строку код выполняется - b 6
			#A(n)
			# А если раскомментировать эту строку то ошибка ? - b 664error 
			#super().__init__(n)
		except:
			print('error')
a = A(0)

Отредактировано FishHook (Сен. 20, 2019 10:07:28)

Офлайн

#2 Сен. 20, 2019 15:36:30

PEHDOM
Зарегистрирован: 2016-11-28
Сообщения: 2196
Репутация: +  294  -
Профиль   Отправить e-mail  

super() вопрос [python3]

http://python.su/forum/post/204427/



==============================
Помещайте код в теги:
[code python][/code]
Бериегите свое и чужое время.

Офлайн

#3 Сен. 20, 2019 18:09:35

AD0DE412
Зарегистрирован: 2019-05-12
Сообщения: 1130
Репутация: +  44  -
Профиль   Отправить e-mail  

super() вопрос [python3]

 instances = []
class A:
    def __new__(cls, *args):
        instances.append(cls)
        print(len(instances))
        if len(args) == 0:
            return super(A, cls).__new__(cls)
        if int(args[0]) < 5:
            return super(A, cls).__new__(cls)
        else:
            return 0
    def __init__(self, n):
        n = n + 1
        print('a ' + str(n))
        B(n)
class B(A):
    def __new__(cls, *args):
        return super(B, cls).__new__(cls)
    def __init__(self, n):
        n = n + 1
        print('b ' + str(n))
        try:
#             Почему если раскомментировать эту строку код выполняется - b 6
#            A(n)
#            if int(args[0]) < 5:
#             А если раскомментировать эту строку то ошибка ? - b 664error
#            super().__init__(n)
#            тк бесконечная рекурсия  
        except Exception as err:
            print(err)
a = A(0)
зы уже ответили в другой ветке
ззы поправте если ошибаюсь super().__init__(n) в классе В дергает только метод из класа А без создания энкземпляра класса А



1. пжлст, форматируйте код, это в панели создания сообщений, выделите код и нажмите что то вроде
2. чтобы вставить изображение залейте его куда нибудь (например), нажмите и вставьте ссылку на его url

есчщо

Отредактировано AD0DE412 (Сен. 20, 2019 20:56:22)

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version