====Наследование==== Наследование подразумевает то, что дочерний класс содержит все атрибуты родительского класса, при этом некоторые из них могут быть переопределены или добавлены в дочернем. Например, мы можем создать свой класс, Person: app/lessonImport40/Person.py class Person: def __init__(self, name = 'Серега'): self.name = name self.__age = 20 # инкапсуляция типа private def printInfo(self): print(f'Зовут {self.name} ему {self.__age} лет') @property def age(self): ''' Декоратор :param age: передаваемый папраметр ''' return self.__age @age.setter def age(self, value): ''' Декоратор :param value: передаваемый папраметр ''' self.__age = value Создадим класс наследни Employee, в него передадим класс **class Employee(Person):** , класс Employee унаследует все методы класса Person. По умолчанию в классе наследнике Employee вызывается родительский конструктор, если внутри Employee создать свой конструктор то он переопределит родительский, что бы этого избежать необходимо родительский конструктор вызвать явно **Person.__init__(self, name)**. app/lessonImport40/Employee.py from app.lessonImport40.Person import Person class Employee(Person): def __init__(self, company = 'Картотека',name = 'Ира'): Person.__init__(self, name) self.__company = company @property def company(self): ''' Декоратор :param age: передаваемый папраметр ''' return self.__company @company.setter def company(self, value): ''' Декоратор :param value: передаваемый папраметр ''' self.__company = value def infoEmployee(self): print(f'компания {self.__company}') Все методы и свойста класс Person, кроме закрытых (**self.__age**), можно вызвать через экземпляр класса Employee from app.lessonImport40.Employee import Employee employee = Employee() employee.age = 25 employee.printInfo() employee.infoEmployee() print('---------------------------') employee2 = Employee('Дима', 28) employee2.printInfo() employee2.infoEmployee() Вывод результата Зовут Ира ему 25 лет компания Картотека --------------------------- Зовут 28 ему 20 лет компания Дима