class Parent():
def __init__(self, x):
self.x = x
print('init parent')
def hithere(self):
print('hey there')
print(self.x)
class Child(Parent):
def __init__(self, x):
self.x = x
super().hithere()
child = Child(3)
Здесь у меня есть родительский класс и дочерний класс, который наследуется от родительского.Зачем мне нужен super () Если я всегда могу сделать одно и то же, заменив его именем родительского класса, который я встраиваю:
class Parent():
def __init__(self, x,y):
self.x = x
self.y = y
print('init parent')
def hithere(self):
print('hey there')
print(self.x)
class Child(Parent):
def __init__(self, x):
self.x = x
Parent.hithere(self)
child = Child(3)
, который делает то же самое.
Мой второй вопрос: правильно ли говорить, что абстрактные классы не могут иметь атрибутов?Если Parent был абстрактным классом, то всякий раз, когда один из его методов вызывает self, например hithere (self), мне нужно передать его обратно с помощью super (). Method (self).Таким образом, эти атрибуты на самом деле являются атрибутами Child, которые, как оказалось, имеют те же имена атрибутов, что и используемый родительский класс.