logo

Herança Python

A herança é um aspecto importante do paradigma orientado a objetos. A herança fornece reutilização de código ao programa porque podemos usar uma classe existente para criar uma nova classe em vez de criá-la do zero.

Na herança, a classe filha adquire as propriedades e pode acessar todos os membros de dados e funções definidos na classe pai. Uma classe filha também pode fornecer sua implementação específica para as funções da classe pai. Nesta seção do tutorial, discutiremos a herança em detalhes.

como converter str para int

Em python, uma classe derivada pode herdar a classe base apenas mencionando a base entre colchetes após o nome da classe derivada. Considere a seguinte sintaxe para herdar uma classe base na classe derivada.

Herança Python

Sintaxe

 class derived-class(base class): 

Uma classe pode herdar várias classes mencionando todas elas entre colchetes. Considere a seguinte sintaxe.

Sintaxe

 class derive-class(, , ..... ): 

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

Saída:

 dog barking Animal Speaking 

Herança multinível do Python

A herança multinível é possível em python como outras linguagens orientadas a objetos. A herança multinível é arquivada quando uma classe derivada herda outra classe derivada. Não há limite para o número de níveis até os quais a herança multinível é arquivada em python.

Herança Python

A sintaxe da herança multinível é fornecida abaixo.

Sintaxe

 class class1: class class2(class1): class class3(class2): . . 

Exemplo

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

Saída:

 dog barking Animal Speaking Eating bread... 

Herança múltipla Python

Python nos fornece a flexibilidade de herdar múltiplas classes base na classe filha.

Herança Python

A sintaxe para realizar herança múltipla é fornecida abaixo.

Sintaxe

 class Base1: class Base2: . . . class BaseN: class Derived(Base1, Base2, ...... BaseN): 

Exemplo

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

Saída:

 30 200 0.5 

O método issubclass(sub,sup)

O método issubclass(sub, sup) é usado para verificar os relacionamentos entre as classes especificadas. Retorna verdadeiro se a primeira classe for a subclasse da segunda classe e falso caso contrário.

Considere o seguinte exemplo.

Exemplo

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

Saída:

 True False 

O método isinstance (obj, classe)

O método isinstance() é usado para verificar o relacionamento entre os objetos e classes. Retorna verdadeiro se o primeiro parâmetro, ou seja, obj, for a instância do segundo parâmetro, ou seja, classe.

em string em java

Considere o seguinte exemplo.

Exemplo

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

Saída:

 True 

Substituição de método

Podemos fornecer alguma implementação específica do método da classe pai em nossa classe filha. Quando o método da classe pai é definido na classe filha com alguma implementação específica, o conceito é chamado de substituição de método. Podemos precisar executar a substituição de método no cenário em que a definição diferente de um método de classe pai é necessária na classe filha.

Considere o exemplo a seguir para realizar a substituição de método em python.

Exemplo

 class Animal: def speak(self): print('speaking') class Dog(Animal): def speak(self): print('Barking') d = Dog() d.speak() 

Saída:

 Barking 

Exemplo da vida real de substituição de método

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

Saída:

 Bank Rate of interest: 10 SBI Rate of interest: 7 ICICI Rate of interest: 8 

Abstração de dados em python

A abstração é um aspecto importante da programação orientada a objetos. Em python, também podemos ocultar dados adicionando o sublinhado duplo (___) como prefixo ao atributo que deve ser ocultado. Depois disso, o atributo não ficará visível fora da classe através do objeto.

Considere o seguinte exemplo.

Exemplo

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

Saída:

 The number of employees 2 AttributeError: 'Employee' object has no attribute '__count'