Pythoner
Фотография
✈️ В Python абстрактные классы (ABC) — это классы, которые предназначены для того, чтобы быть базовыми для других классов, и не предполагают создания собственных экземпляров. Абстрактные классы позволяют определить общий интерфейс для группы подклассов, обеспечивая, что все они реализуют определенные методы.
➡️ Применение абстрактных классов способствует созданию более структурированного и поддерживаемого кода, повышает его читаемость и позволяет применять полиморфизм более эффективно. Они особенно полезны при разработке библиотек и фреймворков, где необходимо обеспечить определенный набор функциональности в классах-наследниках. Использование ABC помогает предотвратить ошибки, связанные с отсутствием реализации обязательных методов в подклассах, которые могли бы проявиться только во время выполнения.
➡️ Вот пример абстрактного класса и его использования:
from abc import ABC, abstractmethod
class Animal(ABC): # Animal - абстрактный базовый класс
@abstractmethod
def make_sound(self):
pass
@abstractmethod
def move(self):
pass
class Dog(Animal):
def make_sound(self):
return "Woof!"
def move(self):
return "Runs"
class Cat(Animal):
def make_sound(self):
return "Meow!"
def move(self):
return "Walks"
dog = Dog()
print(dog.make_sound()) # Вывод: Woof!
print(dog.move()) # Вывод: Runs
cat = Cat()
print(cat.make_sound()) # Вывод: Meow!
print(cat.move()) # Вывод: Walks
try:
animal = Animal() # Попытка создать экземпляр абстрактного класса
except TypeError as e:
print(e) # Вывод: Can't instantiate abstract class Animal with abstract methods make_sound, move
animals = [Dog(), Cat()]
for animal in animals:
print(animal.make_sound()) # Полиморфизм: вызов метода make_sound для разных животных
class Fish(Animal):
def make_sound(self):
return "Blub!"
# Забыли реализовать метод move
try:
fish = Fish() # Попытка создать экземпляр класса с нере… Читать полностью →
22 · 1.6K ·