Abstract Base Classes (ABCs), nesne yönelimli programlamada bir tasarım modelidir. ABC'ler, belirli bir arayüzü tanımlarlar, ancak bu arayüzün nasıl uygulanacağını belirtmezler. Bu, alt sınıfların bu arayüzü uygulamasını ve belirli metotları ayrıntılı bir şekilde tanımlamasını gerektirir.
Python'da, abc modülü abstract base class oluşturmayı sağlar. Bu modül, bir sınıfı abstract olarak işaretlemek için bir ABC meta sınıfı ve bir metodu abstract olarak işaretlemek için bir abstractmethod dekoratörü sağlar.
Bir abstract base class, tüm alt sınıfların uygulaması gereken bir veya daha fazla abstract metot tanımlar. Bir abstract metot, bir arayüzü (yani, metot adı ve parametreleri) tanımlar, ancak herhangi bir uygulama sağlamaz. Bu, alt sınıfların bu metotları uygulamasını ve belirli bir işlevselliği sağlamasını gerektirir.
İşte bir örnek:
from abc import ABC, abstractmethod class AbstractClassExample(ABC): @abstractmethod def do_something(self): pass class AnotherSubclass(AbstractClassExample): def do_something(self): super().do_something() print("The subclass is doing something") x = AnotherSubclass() x.do_something()
Bu örnekte, AbstractClassExample bir abstract base class'tır ve do_something bir abstract metottur. AnotherSubclass, AbstractClassExample'dan türetilmiştir ve do_something metodunu uygular.
Abstract base class'lar, bir sınıf hiyerarşisi için bir şablon sağlar ve tüm alt sınıfların belirli bir arayüzü uygulamasını zorlar. Bu, kodun daha tutarlı ve daha kolay anlaşılır olmasını sağlar.