@roma Для создания абстрактного класса, Вы можете воспользоваться стандартной библиотекой abc (Abstract Base Class)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 |
from abc import ABC, abstractmethod # Импортируем из модуля abc(Abstract Base Class) ABC и abstractmethod class Person(ABC): # Создаем абстрактный класс Person # В абстрактном классе мы можем использовать абстрактные методы и обычные def create(self): # Обычный метод, который смогут использовать все наследники данного класса print("PERSON ARE CREATED") @abstractmethod # Ставим декоратор abstractmethod def info(self): # Данный метод является абстрактным, для каждого наследника он будет разным ... class Worker_Person(Person): # Создаем наследующий класс класса Person def info(self): # Назначаем для абстрактного метода свою информацию в наследующем классе print("THIS PERSON ARE WORKING") class Relaxing_Person(Person): # Для примера создаем еще один наследующий класс def info(self): print("THIS PERSON ARE RELAXING") if __name__ == "__main__": # person = Person() # person.create() # person.info() # Если мы попробуем сделать то, что выше - получим ошибку # TypeError: Can't instantiate abstract class Person with abstract method info # Абстрактный класс не может инитиализоровать абстрактный метод - нужен наследующий класс worker_person = Worker_Person() worker_person.create() worker_person.info() # Вывод : # PERSON ARE CREATED # THIS PERSON ARE WORKING relaxing_person = Relaxing_Person() relaxing_person.create() relaxing_person.info() # Вывод : # PERSON ARE CREATED # THIS PERSON ARE RELAXING |