Уведомления

Группа в Telegram: @pythonsu

#1 Окт. 15, 2019 10:06:15

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

Как правильно инициализировать родителя?

 # Как правильно инициализировать родителя?
class A:
	def __init__(self, parent=None):
		self.a = 1
class C(A):
	def __init__(self, parent=None):
		super().__init__(parent)
		
a = A() 		# Создали новый инстанс
a.a = 10		# Поменяли внутренние аттрибуты
c = C(a)		# Хотим унаследовать с аттрибутом 10
print(c.a)		# Но на выходе = 1

Офлайн

#2 Окт. 15, 2019 10:24:17

FishHook
От:
Зарегистрирован: 2011-01-08
Сообщения: 8312
Репутация: +  568  -
Профиль   Отправить e-mail  

Как правильно инициализировать родителя?

KULINAR847
По-моему, вы путаетесь в определениях. a = A() - это объект, то есть экземпляр класса. Классы наследуются от классов, не от экземпляров. Вот это - ерунда, так не бывает c = C(a).



Офлайн

#3 Окт. 15, 2019 10:44:02

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

Как правильно инициализировать родителя?

 class A:
	def __init__(self, parent=None):
		self.a = 1
		if parent is not None:
			self.a = parent.a 	# Если класс A имеет много параметров
							# Как сделать "self = parent" ?
class C(A):
	def __init__(self, parent=None):
		super().__init__(parent)
		
a = A() 		
a.a = 10		
c = C(a)		
print(c.a)		# Тогда на выходе = 10 что и необходимо

Отредактировано KULINAR847 (Окт. 15, 2019 11:27:23)

Офлайн

Board footer

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

Powered by DjangoBB

Lo-Fi Version