Я выполнял упражнение, которое включало множественное наследование с инициализаторами, для которых требовалось несколько аргументов, и подумал, как super () может решить эту проблему вместо ручного вызова каждого суперкласса?
class One:
def __init__(self, address, phone):
self.address = address
self.phone = phone
class Two:
def __init__(self, city):
self.city = city
class Three(One,Two):
def __init__(self, country, address, phone, city):
self.country = country
One.__init__(self, address, phone)
Two.__init__(self, city)
print(f"{address}, " + f"{phone}, " + f"{self.city}, " + f"{self.country}")
i = Three("Acountry", "AnAddress", "Aphone", "Acity")
Это прекрасно работает все аргументы печатаются хорошо и по порядку, но я не знаю, как реализовать здесь super()
.
Я попытался добавить 2 суперслоя на подкласс:
super().__init__(address, phone)
super().__init__(city)
И даже добавьте super () в родительский класс, чтобы он указывал на class Two
:
class One:
def __init__(self, address, phone, city):
self.address = address
self.phone = phone
super().__init__(city)
class Two:
def __init__(self, city):
self.city = city
class Three(One,Two):
def __init__(self, country, address, phone, city):
self.country = country
super().__init__(address, phone)
print(f"{address}, " + f"{phone}, " + f"{self.city}, " + f"{self.country}")
i = Three("Acountry", "AnAddress", "Aphone", "Acity")
Это не работает.
Как я могу реализовать super()
в оригинале код, который работает?