Introdução à herança em Python

O Python, com recursos de vários paradigmas, obviamente acomoda o estilo de programação orientado a objetos. E qualquer linguagem não pode ser ridícula o suficiente para reivindicar metodologia orientada a objetos sem fornecer suporte para herança, incluindo python. O Python fornece um sabor de herança distintamente único, permitindo operações extremamente poderosas nunca antes vistas. Embora venha com algumas limitações, por exemplo, atualmente, a segurança por meio do escopo para os alunos só é alcançada por convenção e não é inerentemente parte do idioma. Assim, os membros declarados como privados são realmente acessíveis ao público com algumas modificações.

Sintaxe da Classe

A sintaxe para definir uma classe derivada quando uma ou mais classes base devem ser herdadas é a seguinte:

class derivedClassName(baseClassName(, …)):


Como mostrado, a classe derivada especifica uma lista separada por vírgula de classes base para herdar no cabeçalho de definição de classe.

Cozinha de Classe

Vamos começar definindo uma classe base usada para todos os nossos exemplos:

class cuisine():
def __init__(self, type):
self.type = type
returncooked_cuisine = new cuisine('cooked')

A base mostrada define um modelo de objeto usado para definir cozinhas e capturar se é uma cozinha cozida ou não. Ele também tem um construtor usado para aceitar o tipo de cozinha. Posteriormente, um objeto é criado do tipo 'cozido'.

Tipos de herança em Python

Existem principalmente dois tipos de herança, cuja combinação gera todos os outros tipos.

1. Herança única: uma classe base, herdada por uma classe derivada. Este é o tipo mais simples de herança. Também o mínimo possível. A classe derivada chama automaticamente o construtor da classe base.

2. Herança Múltipla: Várias classes base herdadas por uma classe derivada. Os construtores da classe base são chamados na ordem em que as classes foram derivadas.

Tipos derivados de herança

A combinação das duas formas de herança acima pode levar aos seguintes tipos de herança:

1. Herança Hierárquica: Uma classe base herdada por várias classes derivadas. Cada classe derivada funcionará independentemente, mas os objetos compartilham as variáveis ​​da classe entre diferentes classes.

2. Herança multinível: Uma classe derivada que serve como uma classe base para outra classe derivada. Os construtores da classe base são invocados recursivamente nesse caso.

3. Herança Híbrida: Uma combinação de várias instâncias dos tipos de herança mencionados acima. Isso pode levar a qualquer combinação imaginável de classes.

Exemplos de herança em Python

Abaixo estão alguns exemplos de herança em Python:

1. Herança Única

Vamos criar uma classe chamada cozinha indiana que herda a culinária de classe.

class indian_cuisine(cuisine):
def __init__(self, type, place):
super().__init__(type)
self.place = place
returnindian_cuisine = new cuisine('cooked', 'India')

Como mostrado em uma nova classe, indian_cusine foi criado, que aceita o parâmetro type e chama um construtor da classe base, passando o parâmetro. Além disso, cria um novo local de variável de objeto . Isso é usado apenas na classe derivada e não visível para objetos de classe base.

2. Herança Hierárquica

Vamos criar uma classe chamada ItalianCuisine que herda a culinária de classe:

class italian_cuisine(cuisine):
def __init__(self, type, place):
super().__init__(type)
self.place = place
returnitalian_cuisine = new cuisine('cooked', 'Italy')

Como mostrado em uma nova classe, italian_cusine foi criado, que aceita o parâmetro type e chama um construtor da classe base, passando o parâmetro. Além disso, cria um novo local de variável de objeto . Isso é usado apenas na classe derivada e não visível para objetos de classe base. Agora, como duas classes, indian_cusines e italian_cuisine herdam a classe cuisine, há uma herança hierárquica implementada.

3. Herança Múltipla

Vamos criar uma classe chamada FineDineCuisine que herda de várias classes.

class fine_dine_cuisine(indian_cuisine, italian_cuisine):
def __init__(self, type, place, portion_size):
super().__init__(type, place)
self.portion_size = portion_size
returnfine_dine_cuisine = new cuisine('cooked', 'India', 4)

A nova classe fine_dine_cuisine herda de indian_cuisine e italian_cuisine, herdando seus parâmetros. Ele aceita os parâmetros tipo, local e porção_size. type e place são passados ​​como argumentos para construtores da classe base. porção_size é um novo parâmetro de objeto não compartilhado com as classes base.

Nota sobre a herança de diamantes:

Agora, já que indian_cuisine e italian_cuisine herdam da classe cuisine, ele forma um caso clássico de herança de diamante, em que várias instâncias de uma classe base estão presentes direta / indiretamente em uma classe derivada. Na maioria das linguagens, como c ++, isso causa um problema ou classes abstratas são usadas. O Python, por outro lado, especifica sua própria solução inovadora. Ele herda os métodos e atributos comuns apenas uma vez, dando preferência às classes na ordem da herança. Assim, aqui, como a culinária é herdada duas vezes, é dada preferência à versão indian_cuisine da cozinha, como é herdada primeiro.

Nota sobre os membros da classe:

Qualquer atributo definido dentro da definição de classe, mas não dentro de uma função, torna-se um atributo de classe e é compartilhado por todas as instâncias da classe. Portanto, se um objeto alterar qualquer um desses atributos de classe, as alterações serão visíveis para todas as outras instâncias (seja para o mesmo objeto de classe ou objeto de classe derivado). Portanto, tenha cuidado ao usar atributos de classe não presentes em nenhuma definição de método.

Conclusão - Herança em Python

O Python mais uma vez definiu um método muito flexível, flexível e poderoso para usar quando o paradigma orientado a objetos é a rota preferida. Definitivamente, é um conceito que todos podem usar e devem ter sob o cinto. Esses conceitos são usados ​​para formar os blocos de construção de qualquer peça de software escalável e sustentável.
Com esta introdução básica à herança em python, você pode ir em frente e direcionar declarações de problemas do mundo real e ver o quão bem você pode pensar em um design.

Artigos recomendados

Este é um guia para a herança em Python. Aqui discutimos a introdução, sintaxe e tipos de herança no Python, juntamente com diferentes exemplos e sua implementação de código. Você também pode consultar nossos outros artigos sugeridos -

    1. Herança em Java
    2. O que é herança em programação?
    3. Herança em C #
    4. Substituindo em Java
    5. Herança em PHP
    6. Declarando classe abstrata em C # com exemplo