Вопрос по Наследованию в Пайтон.

Diglerharibo

Новичок
Пользователь
Авг 17, 2020
21
1
3
Windows 10
Python 3.8.3

Python:
class Human():
    def __init__(self, age, name):
        self.age = age
        self.name = name
    def sname(self):
        print('My name is: ' + self.name)
       
class Doctor(Human):
    def __init__(self, age, name, profession):
        super().__init__(age, name)
        self.profession = profession
    def sprofession(self):
        print('My profession is:' + self.profession)

Mikhael = Doctor('1', '2', '3')
Mikhael.sname()
Mikhael.sprofession()

Написал я, значит, такую дребедень, чтобы поиграться с наследованием. Первое впечатление какое-то смутное. Вопрос такой: если у меня уже есть родительский класс с параметрами возраста и имени, могу ли я как-нибудь указывать значения этих параметров при создании дочернего класса без дублирования age и name в методе __init__? Пояснение: изначально я писал вот так:

Python:
class Doctor(Human):
    def __init__(self, profession):
        super().__init__(age, name)
        self.profession = profession

    def sprofession(self):
        print('My profession is:' + self.profession)

то есть как по определению наследования: мы получаем доступ к методам и атрибутам родительского класса. Но если параметры имя и возраст не дублировать, то программа выдает ошибку при попытке указать эти значения при создании экземпляра класса доктор. Можно ли как-то указать эти атрибуты в экземпляре класса доктор без дубляжа? Если нет то мне не до конца понятны преимущества этого метода...или он заключается не в удобстве пользования атрибутами, а только функциями внутри классов?
 
Последнее редактирование модератором:
  • Разочарован
Реакции: MonaCCi

stud_55

Модератор
Команда форума
Модератор
Апр 3, 2020
1 522
672
113
Код вставляйте с помощью ... -> код -> Python.
Можно ли как-то указать эти атрибуты в экземпляре класса доктор без дубляжа?
Только если задать значения по умолчанию в родительском классе и вызывать его конструктор без аргументов, но тогда во всех экземплярах класса Doctor будут одинаковые значения параметров name и age.
 

Форум IT Специалистов