Manufaturação industrial
Internet das coisas industrial | Materiais industriais | Manutenção e reparo de equipamentos | Programação industrial |
home  MfgRobots >> Manufaturação industrial >  >> Industrial programming >> python

Herança Python

Herança Python


A herança nos permite definir uma classe que recebe todas as funcionalidades de uma classe pai e nos permite adicionar mais. Neste tutorial, você aprenderá a usar herança em Python.

Vídeo:herança do Python

Herança em Python


A herança é um recurso poderoso na programação orientada a objetos.

Refere-se à definição de uma nova classe com pouca ou nenhuma modificação em uma classe existente. A nova classe é chamada de classe derivada (ou filha) e aquele do qual ele herda é chamado de classe base (ou pai) .

Sintaxe de herança do Python

class BaseClass:
  Body of base class
class DerivedClass(BaseClass):
  Body of derived class

A classe derivada herda os recursos da classe base, onde novos recursos podem ser adicionados a ela. Isso resulta na reutilização do código.

Exemplo de herança em Python


Para demonstrar o uso da herança, tomemos um exemplo.

Um polígono é uma figura fechada com 3 ou mais lados. Digamos, temos uma classe chamada Polygon definido a seguir.
class Polygon:
    def __init__(self, no_of_sides):
        self.n = no_of_sides
        self.sides = [0 for i in range(no_of_sides)]

    def inputSides(self):
        self.sides = [float(input("Enter side "+str(i+1)+" : ")) for i in range(self.n)]

    def dispSides(self):
        for i in range(self.n):
            print("Side",i+1,"is",self.sides[i])

Esta classe possui atributos de dados para armazenar o número de lados n e magnitude de cada lado como uma lista chamada lados .



O inputSides() O método recebe a magnitude de cada lado e dispSides() exibe esses comprimentos laterais.

Um triângulo é um polígono com 3 lados. Então, podemos criar uma classe chamada Triangle que herda de Polygon . Isso faz com que todos os atributos de Polygon classe disponível para o Triângulo classe.

Não precisamos defini-los novamente (reutilização de código). Triângulo pode ser definido da seguinte forma.
class Triangle(Polygon):
    def __init__(self):
        Polygon.__init__(self,3)

    def findArea(self):
        a, b, c = self.sides
        # calculate the semi-perimeter
        s = (a + b + c) / 2
        area = (s*(s-a)*(s-b)*(s-c)) ** 0.5
        print('The area of the triangle is %0.2f' %area)

No entanto, a classe Triangle tem um novo método findArea() para encontrar e imprimir a área do triângulo. Aqui está um exemplo de execução.
>>> t = Triangle()

>>> t.inputSides()
Enter side 1 : 3
Enter side 2 : 5
Enter side 3 : 4

>>> t.dispSides()
Side 1 is 3.0
Side 2 is 5.0
Side 3 is 4.0

>>> t.findArea()
The area of the triangle is 6.00

Podemos ver que, embora não tenhamos definido métodos como inputSides() ou dispSides() para a classe Triangle separadamente, pudemos usá-los.

Se um atributo não for encontrado na própria classe, a pesquisa continua na classe base. Isso se repete recursivamente, se a própria classe base for derivada de outras classes.

Substituição de método em Python


No exemplo acima, observe que __init__() foi definido em ambas as classes, Triangle também Polígono . Quando isso acontece, o método na classe derivada substitui o da classe base. Isto é, __init__() em Triângulo tem preferência sobre o __init__ em Polígono .

Geralmente, ao substituir um método base, tendemos a estender a definição em vez de simplesmente substituí-la. O mesmo está sendo feito chamando o método na classe base de um na classe derivada (chamando Polygon.__init__() de __init__() em Triangle ).

Uma opção melhor seria usar a função interna super() . Então, super().__init__(3) é equivalente a Polygon.__init__(self,3) e é preferido. Para saber mais sobre o super() função em Python, visite a função Python super().

Duas funções integradas isinstance() e issubclass() são usados ​​para verificar heranças.

A função isinstance() retorna True se o objeto for uma instância da classe ou outras classes derivadas dela. Toda e qualquer classe em Python herda da classe base object .
>>> isinstance(t,Triangle)
True

>>> isinstance(t,Polygon)
True

>>> isinstance(t,int)
False

>>> isinstance(t,object)
True

Da mesma forma, issubclass() é usado para verificar a herança de classe.
>>> issubclass(Polygon,Triangle)
False

>>> issubclass(Triangle,Polygon)
True

>>> issubclass(bool,int)
True

python

  1. Tipos de dados Python
  2. Operadores Python
  3. Instrução de passagem do Python
  4. Dicionário Python
  5. Exceções personalizadas do Python
  6. Programação Orientada a Objetos Python
  7. Sobrecarga do Operador Python
  8. Python @property decorador
  9. type() e isinstance() em Python com exemplos
  10. C# - Herança