Преглед апстрактне класе у Питхон-у

Апстрактни часови су класе које су декларисане, али не садрже имплементације. То се може наследити само. Сажеци наставе раде као образац за поткласе. Апстрактне класе не могу бити инстанциране и захтевају им подкласе да обезбеде имплементације апстрактних метода. Потребне су му поткласе да омогуће имплементацију апстрактних метода које су дефинисане у класе Сажетак. Сажетак предавања садржи једну или више апстрактних метода. Апстрактне методе су методе које су декларисане без икаквих имплементација. Не можемо директно створити објект апстрактне класе, али можемо га наслиједити на основну класу и потом створити објект. У овој теми ћемо сазнати о Сажетак класе у Питхон-у.

У апстрактној класи могу се налазити и апстрактна класа и класа бетона. Кориштењем апстрактне класе можемо дефинирати генерализирану структуру метода без пружања потпуне имплементације сваке методе. Апстрактне методе које су дефиниране у апстрактној класи обично немају тијело, али могуће је имати апстрактне методе с имплементацијама у апстрактној класи и ако се неки подразред изводи из такве апстрактне класе, треба осигурати имплементацију за такве методе . Ако било која апстрактна метода не буде изведена од изведене класе, онда ће довести до грешке. Објект апстрактне класе не може се директно створити, али када ову апстрактну класу користимо за пружање одређених функционалности основној класи или подређеној класи, то може учинити и креирањем објекта основне класе.

Значај апстрактних часова

1. Омогућава задану функционалност основних класа.

2. Дефинише заједнички АПИ за скуп подразреда, користан када трећа страна даје додатке у апликацији.

3. Корисно код великог кода било је тешко памтити многе часове.

Синтакса

From abc import ABC
Class Educba(ABC):

Да би било која класа била апстрактна класа, класа мора наслиједити АБЦ метакласу из питхон-овог уграђеног абц модула. абц модул увози АБЦ метацласс.

Сажетак Методе у Питхон-у

Апстрактне методе су методе које су декларисане без икаквих имплементација.

Синтакса

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

Да бисте дефинисали апстрактне методе у апстрактној класи, метода мора бити украшена кључном речи која се зове @аб абстрактметход децоратор. Декоратор @абриефметход мора се увести из питхон-ове уграђене библиотеке под називом абц.

Како су сажетак наставили у Питхону?

Питхон по дефаулту нема апстрактне класе, али има модул или библиотеку која чини основу за дефинисање Абстрацт Басе класа (АБЦ) и назив тог модула се зове АБЦ. Означава методу основне класе као апстрактну основну класу, а затим производи конкретне класе као имплементације апстрактне базе. Метода се претвара у апстрактни метод уз помоћ кључне речи декоратора званог @аб абстрактметход.

АБЦ модул користи се за креирање апстрактних класа, @ абстрацтметход је декоратер који се користи за проглашавање апстрактне методе. АБЦ модул успоставља уговор између основне класе и класе бетона.

Абц модул пружа основу за дефинисање апстрактних основних класа (АБЦ) у Питхон-у. Модул збирке садржи неке конкретне класе које су изведене из АБЦ-а и могу се даље поделити. Поред свих ових модула колекције садржи и неки АБЦ који се може користити за тестирање даје ли класа или инстанца одређени интерфејс или не.

Овај модул пружа следећу класу:

класа абц.АБЦМета

Метакласа се користи за дефинисање апстрактних основних класа (АБЦ)

Користимо метакласу за стварање апстрактне основне класе.

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

Пример

# 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())

Добивени резултат

Ово је конкретна метода

16

16

Ово је конкретна метода

8

12

У горњем примјеру, класа Сажетак је Облик који садржи једну конкретну методу која се назива уобичајена и двије апстрактне методе које се зову област и обод. Постоје две подређене класе Скуаре анд Рецтангле које наслеђују апстрактну класу Схапе и имплементирају апстрактну методу.

Имплементација путем субкласирања:

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))

Абстрацт Пропертиес

Апстрактне класе садрже апстрактна својства заједно с апстрактним методама дефинираним од стране @абриефпроперти.

Сада можемо користити имовину, проперти.геттер (), проперти.сеттер () и Проперти.делетер () са апстрактним класама.

Синтакса

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

Ово дефинише својство само за читање.

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

Питхон 2

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

Питхон 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)

Излаз:

Апстрактни клас не може да се примени у облику апстрактног подручја

Класна класа

Закључак

На крају, закључујем да је апстрактна класа начин да се осигура одређени ниво квалитета кода, јер они примењују одређене стандарде и могу смањити количину дупликата кода који пишемо. Успоставља везу између основне класе и класе бетона. Омогућава једноставну имплементацију кода. Дефинише генерализовану структуру метода без њене потпуне примене. Олакшава живот програмеру апстрахирањем позадинског процеса и стављајући их у фокус само на важне тачке. То чини истраживање и разумљивост много бржим разумевањем заједничке и једноставне структуре класе унутар кода.

Препоручени чланци

Ово је водич за Сажетак класе у Питхон-у. Овде смо расправљали о томе како апстрактне часове раде на Питхон-у, на важности и методама уз одговарајуће примере. Можда ћете такође погледати следеће чланке да бисте сазнали више -

  1. Операције датотека Питхон-ом
  2. Инкапсулација у Питхон-у
  3. Петље у Питхон-у
  4. Конструктор у Питхон-у
  5. Питхон сетови
  6. Увод у апстрактну класу на ПХП-у

Категорија: