Наслеђивање је важан аспект објектно оријентисане парадигме. Наслеђивање обезбеђује могућност поновне употребе кода програму јер можемо да користимо постојећу класу да креирамо нову класу уместо да је креирамо од нуле.
У наслеђивању, подређена класа стиче својства и може приступити свим члановима података и функцијама дефинисаним у родитељској класи. Подређена класа такође може да обезбеди своју специфичну имплементацију функцијама родитељске класе. У овом одељку туторијала ћемо детаљно разговарати о наслеђивању.
одјавите се са гоогле налога на андроиду
У Питхон-у, изведена класа може да наследи основну класу само навођењем базе у загради иза имена изведене класе. Размотрите следећу синтаксу да бисте наследили основну класу у изведену класу.
Синтакса
class derived-class(base class):
Класа може наследити више класа тако што их све помиње у загради. Размотрите следећу синтаксу.
Синтакса
class derive-class(, , ..... ):
Пример 1
class Animal: def speak(self): print('Animal Speaking') #child class Dog inherits the base class Animal class Dog(Animal): def bark(self): print('dog barking') d = Dog() d.bark() d.speak()
Излаз:
dog barking Animal Speaking
Питхон наслеђивање на више нивоа
Наслеђивање на више нивоа је могуће у Питхон-у као и други објектно оријентисани језици. Наслеђивање на више нивоа се архивира када изведена класа наследи другу изведену класу. Не постоји ограничење на број нивоа до којих се наслеђивање на више нивоа архивира у Питхон-у.
Синтакса наслеђивања на више нивоа је дата у наставку.
Синтакса
class class1: class class2(class1): class class3(class2): . .
Пример
class Animal: def speak(self): print('Animal Speaking') #The child class Dog inherits the base class Animal class Dog(Animal): def bark(self): print('dog barking') #The child class Dogchild inherits another child class Dog class DogChild(Dog): def eat(self): print('Eating bread...') d = DogChild() d.bark() d.speak() d.eat()
Излаз:
dog barking Animal Speaking Eating bread...
Питхон вишеструко наслеђивање
Питхон нам пружа флексибилност да наследимо више основних класа у подређеној класи.
Синтакса за обављање вишеструког наслеђивања је дата у наставку.
Синтакса
class Base1: class Base2: . . . class BaseN: class Derived(Base1, Base2, ...... BaseN):
Пример
class Calculation1: def Summation(self,a,b): return a+b; class Calculation2: def Multiplication(self,a,b): return a*b; class Derived(Calculation1,Calculation2): def Divide(self,a,b): return a/b; d = Derived() print(d.Summation(10,20)) print(d.Multiplication(10,20)) print(d.Divide(10,20))
Излаз:
30 200 0.5
Метода исподкласе(суб,суп).
Метода иссубцласс(суб, суп) се користи за проверу односа између наведених класа. Враћа тачно ако је прва класа поткласа друге класе, и нетачно у супротном.
Размотрите следећи пример.
Пример
class Calculation1: def Summation(self,a,b): return a+b; class Calculation2: def Multiplication(self,a,b): return a*b; class Derived(Calculation1,Calculation2): def Divide(self,a,b): return a/b; d = Derived() print(issubclass(Derived,Calculation2)) print(issubclass(Calculation1,Calculation2))
Излаз:
True False
Метода исинстанце (обј, цласс).
Метода исинстанце() се користи за проверу односа између објеката и класа. Враћа тачно ако је први параметар, тј., обј инстанца другог параметра, односно класе.
Размотрите следећи пример.
Пример
class Calculation1: def Summation(self,a,b): return a+b; class Calculation2: def Multiplication(self,a,b): return a*b; class Derived(Calculation1,Calculation2): def Divide(self,a,b): return a/b; d = Derived() print(isinstance(d,Derived))
Излаз:
True
Метход Оверридинг
Можемо да обезбедимо неку специфичну имплементацију методе родитељске класе у нашој подређеној класи. Када је метода родитељске класе дефинисана у подређеној класи са неком специфичном имплементацијом, онда се концепт назива надјачавањем методе. Можда ћемо морати да извршимо замену метода у сценарију где је потребна другачија дефиниција методе родитељске класе у подређеној класи.
Размотрите следећи пример да бисте извршили замена метода у Питхон-у.
Пример
class Animal: def speak(self): print('speaking') class Dog(Animal): def speak(self): print('Barking') d = Dog() d.speak()
Излаз:
исемпти јава
Barking
Пример из стварног живота замене метода
class Bank: def getroi(self): return 10; class SBI(Bank): def getroi(self): return 7; class ICICI(Bank): def getroi(self): return 8; b1 = Bank() b2 = SBI() b3 = ICICI() print('Bank Rate of interest:',b1.getroi()); print('SBI Rate of interest:',b2.getroi()); print('ICICI Rate of interest:',b3.getroi());
Излаз:
Bank Rate of interest: 10 SBI Rate of interest: 7 ICICI Rate of interest: 8
Апстракција података у Питхон-у
Апстракција је важан аспект објектно оријентисаног програмирања. У Питхон-у, такође можемо да извршимо скривање података додавањем двоструке доње црте (___) као префикса атрибуту који треба сакрити. Након овога, атрибут неће бити видљив ван класе кроз објекат.
Размотрите следећи пример.
Пример
class Employee: __count = 0; def __init__(self): Employee.__count = Employee.__count+1 def display(self): print('The number of employees',Employee.__count) emp = Employee() emp2 = Employee() try: print(emp.__count) finally: emp.display()
Излаз:
The number of employees 2 AttributeError: 'Employee' object has no attribute '__count'