Przegląd klasy abstrakcyjnej w Pythonie

Klasy abstrakcyjne to klasy deklarowane, ale nie zawierające żadnych implementacji. Można go tylko odziedziczyć. Klasy abstrakcyjne działają jako szablon dla podklas. Klasy abstrakcyjne nie mogą być tworzone i wymagają podklas w celu zapewnienia implementacji metod abstrakcyjnych. Potrzebuje podklas, aby zapewnić implementacje metod abstrakcyjnych zdefiniowanych w klasach abstrakcyjnych. Klasy abstrakcyjne zawierają jedną lub więcej metod abstrakcyjnych. Metody abstrakcyjne to metody deklarowane bez żadnych implementacji. Nie możemy bezpośrednio utworzyć obiektu klasy abstrakcyjnej, ale możemy odziedziczyć klasę podstawową, a następnie utworzyć obiekt. W tym temacie poznamy Klasa abstrakcyjna w Pythonie.

Zarówno klasa abstrakcyjna, jak i klasa konkretna mogą być zawarte w klasie Streszczenie. Używając klasy abstrakcyjnej możemy zdefiniować uogólnioną strukturę metod bez dostarczania pełnych implementacji każdej metody. Metody abstrakcyjne zdefiniowane w klasie abstrakcyjnej na ogół nie mają treści, ale możliwe jest posiadanie metod abstrakcyjnych z implementacjami w klasie abstrakcyjnej i jeśli jakaś podklasa jest uzyskiwana z takiej klasy abstrakcyjnej, musi zapewnić implementację takich metod . Jeśli jakakolwiek metoda abstrakcyjna nie zostanie zaimplementowana przez klasę pochodną, ​​wygeneruje błąd. Obiekt klasy abstrakcyjnej nie może zostać bezpośrednio utworzony, ale kiedy używamy tej klasy abstrakcyjnej do zapewnienia określonych funkcji klasie bazowej lub klasie potomnej, można to zrobić, tworząc obiekt klasy podstawowej.

Znaczenie klas abstrakcyjnych

1. Zapewnia domyślną funkcjonalność klas podstawowych.

2. Definiuje wspólny interfejs API dla zestawu podklas, co jest przydatne, gdy strona trzecia udostępnia wtyczki w aplikacji.

3. Pomocne w dużym kodzie było pamiętanie, że wiele klas jest trudne.

Składnia

From abc import ABC
Class Educba(ABC):

Aby uznać każdą klasę za klasę abstrakcyjną, klasa musi odziedziczyć metaklasę ABC z wbudowanego modułu abc w pythonie. moduł abc importuje metaklasę ABC.

Metody abstrakcyjne w Pythonie

Metody abstrakcyjne to metody deklarowane bez żadnych implementacji.

Składnia

from abc import ABC, abstract method
Class Educba(ABC):
@abstractmethod
def mymethod(self):
#empty body
pass

Aby zdefiniować metody abstrakcyjne w klasie abstrakcyjnej, metoda musi być ozdobiona słowem kluczowym o nazwie @abstractmethod decorator. Dekorator @abstractmethod należy zaimportować z wbudowanej biblioteki Pythona o nazwie abc.

Jak działały klasy abstrakcyjne w Pythonie?

Python nie ma domyślnie klas abstrakcyjnych, ale ma moduł lub bibliotekę, która stanowi podstawę do definiowania klas abstrakcyjnych baz (ABC), a nazwa tego modułu to ABC. Oznacza metodę klasy bazowej jako abstrakcyjną klasę bazową, a następnie tworzy konkretne klasy jako implementacje abstrakcyjnej klasy bazowej. Metoda zmienia się w metodę abstrakcyjną za pomocą słowa kluczowego dekorator o nazwie @abstractmethod.

Moduł ABC służy do tworzenia klas abstrakcyjnych, @ abstractmethod jest dekoratorem używanym do deklarowania metody abstrakcyjnej. Moduł ABC zawiera umowę między klasą podstawową a klasą betonową.

Moduł abc stanowi podstawę do definiowania abstrakcyjnych klas podstawowych (ABC) w Pythonie. Moduł kolekcji zawiera kilka konkretnych klas pochodzących z ABC i można je dalej dzielić. Oprócz tych wszystkich elementów moduł kolekcji zawiera również część ABC, której można użyć do sprawdzenia, czy klasa lub instancja zapewnia określony interfejs, czy nie.

Ten moduł zapewnia następującą klasę:

klasa abc.ABCMeta

Metaklasa służy do definiowania abstrakcyjnych klas podstawowych (ABC)

Używamy metaklasy do stworzenia abstrakcyjnej klasy bazowej.

from abc import ABCMeta
class C:
__metaclass__ = ABCMeta
MyABC.register(tuple)
assert issubclass(tuple, C)
assert isinstance((), C)

Przykład

# importing the ABC module
from abc import ABC, abstractmethod
class Shape(ABC):
def common(self):
print("This is a concrete method")
@abstractmethod # decorator
def area(self):
pass
@abstractmethod
def perimeter(self):
pass
class Square(Shape):
def __init__(self, side):
self.__side=side
def area(self):
return self.__side*self.__side
def perimeter(self):
return 4*self.__side
class Rectangle(Shape):
def __init__(self, length, breath):
self.__length=length
self.__breath=breath
def area(self):
return self.__length*self.__breath
def perimeter(self):
return 2*(self.__length+self.__breath)
S1=Square(4)
print(S1.common())
print(S1.area())
print(S1.perimeter())
R1=Rectangle(2, 4)
print(R1.common())
print(R1.area())
print(R1.perimeter())

Uzyskane wyniki

To jest konkretna metoda

16

16

To jest konkretna metoda

8

12

W powyższym przykładzie klasą abstrakcyjną jest Kształt, który zawiera jedną konkretną metodę zwaną wspólną i dwie abstrakcyjne metody zwane obszarem i obwodem. Istnieją dwie podrzędne klasy Kwadrat i Prostokąt, które dziedziczą abstrakcyjną klasę Shape i implementują metodę abstrakcyjną.

Implementacja poprzez podklasę:

import abc
class Shape:
def area(self):
pass
class Square(Shape):
def area(self):
print("Square is a child class")
print( issubclass(Square, Shape))
print( isinstance(Square(), Shape))

Właściwości abstrakcyjne

Klasy abstrakcyjne zawierają właściwości abstrakcyjne wraz z metodami abstrakcyjnymi zdefiniowanymi przez @abstractproperty.

Możemy teraz używać własności, property.getter (), property.setter () i property.deleter () z klasami abstrakcyjnymi.

Składnia

class class_name(ABC):
@property
@abstractmethod
Def method(self):

Definiuje to właściwość tylko do odczytu.

class Class_name:
__metaclass__ = ABCMeta
def getx(self): …
def setx(self, value): …
x = abstractproperty(getx, setx)

Python 2

class C(ABC):
@abstractproperty
def my_abstract_property(self):

Python 3.3

class C(ABC):
@property
@abstractmethod
def my_abstract_property(self):
import abc
from abc import ABC, abstractmethod
class Shape(ABC):
@abc.abstractproperty
def area(self):
return "Shape class"
class Square(parent):
@property
def area(self):
return "Square class"
try:
s1 =Shape()
print( s1.area)
except for Exception as err:
print (err)
s1 = Square()
print (s1.area)

Wynik:

Nie można utworzyć wystąpienia abstrakcyjnego kształtu klasy z obszarem metody abstrakcyjnej

Klasa kwadratowa

Wniosek

W końcu doszedłem do wniosku, że klasa abstrakcyjna jest sposobem na zapewnienie pewnego poziomu jakości kodu, ponieważ egzekwują one określone standardy i mogą zmniejszyć ilość pisanego przez nas duplikatu kodu. Ustanawia połączenie między klasą podstawową a klasą betonu. Zapewnia łatwą implementację kodu. Definiuje uogólnioną strukturę metod bez jej pełnej implementacji. Ułatwia życie programistom, wyodrębniając proces tła i skupiając się tylko na ważnych punktach. Sprawia, że ​​badania i zrozumiałość są znacznie szybsze dzięki zrozumieniu wspólnej i prostej struktury klas w kodzie.

Polecane artykuły

To jest przewodnik po klasie abstrakcyjnej w Pythonie. Tutaj omawiamy, jak działają Klasy abstrakcyjne w Pythonie, z ich znaczeniem i metodami z odpowiednimi przykładami. Możesz także zapoznać się z następującymi artykułami, aby dowiedzieć się więcej -

  1. Operacje na plikach Python
  2. Hermetyzacja w Pythonie
  3. Pętle w Pythonie
  4. Konstruktor w Pythonie
  5. Zestawy Python
  6. Wprowadzenie do klasy abstrakcyjnej w PHP