Introdução
Neste laboratório, você aprenderá como verificar se uma classe é uma subclasse de outra classe em Python. Isso envolve a exploração da herança de classes, um conceito fundamental na programação orientada a objetos.
Você começará criando uma classe pai Animal com um construtor e um método speak. Em seguida, você criará as classes filhas Dog e Cat que herdam de Animal e sobrescrevem o método speak. Finalmente, você aprenderá como usar a função issubclass() e inspecionar o atributo __bases__ para determinar as relações de subclasse.
Explorar Herança de Classes
Nesta etapa, você aprenderá sobre herança de classes, um conceito fundamental na programação orientada a objetos (POO). A herança permite que você crie novas classes (classes filhas) que herdam atributos e métodos de classes existentes (classes pai). Isso promove a reutilização de código e ajuda na construção de um código mais organizado e fácil de manter.
Vamos começar criando uma classe pai simples chamada Animal:
## Create a file named animal.py in the ~/project directory
class Animal:
def __init__(self, name):
self.name = name
def speak(self):
print("Generic animal sound")
Abra seu editor VS Code e crie um novo arquivo chamado animal.py no diretório ~/project. Copie e cole o código acima no arquivo. Esta classe possui um método __init__ (construtor) que inicializa o atributo name e um método speak que imprime um som genérico de animal.
Agora, vamos criar uma classe filha chamada Dog que herda da classe Animal:
## Add the following code to animal.py
class Dog(Animal):
def speak(self):
print("Woof!")
Adicione o código acima ao arquivo animal.py. A classe Dog herda de Animal especificando Animal entre parênteses após o nome da classe. A classe Dog também sobrescreve o método speak para fornecer sua própria implementação específica.
Em seguida, vamos criar outra classe filha chamada Cat que também herda da classe Animal:
## Add the following code to animal.py
class Cat(Animal):
def speak(self):
print("Meow!")
Adicione o código acima ao arquivo animal.py. A classe Cat também herda de Animal e sobrescreve o método speak.
Agora, vamos criar um programa principal para usar essas classes:
## Create a file named main.py in the ~/project directory
from animal import Animal, Dog, Cat
animal = Animal("Generic Animal")
dog = Dog("Buddy")
cat = Cat("Whiskers")
animal.speak()
dog.speak()
cat.speak()
Crie um novo arquivo chamado main.py no diretório ~/project e copie e cole o código acima no arquivo. Este programa importa as classes Animal, Dog e Cat do arquivo animal.py. Em seguida, ele cria instâncias de cada classe e chama seus métodos speak.
Para executar o programa, abra seu terminal no VS Code e navegue até o diretório ~/project:
cd ~/project
Em seguida, execute o script main.py usando o comando python:
python main.py
Você deve ver a seguinte saída:
Generic animal sound
Woof!
Meow!
Isso demonstra como as classes Dog e Cat herdam da classe Animal e fornecem suas próprias implementações específicas do método speak. Este é um exemplo básico de herança de classes em Python.
Usar a Função issubclass()
Nesta etapa, você aprenderá como usar a função issubclass() para verificar se uma classe é uma subclasse de outra classe. Esta função é uma função embutida do Python que retorna True se o primeiro argumento for uma subclasse do segundo argumento e False caso contrário.
Continuando com o exemplo da etapa anterior, vamos usar a função issubclass() para verificar as relações entre as classes Animal, Dog e Cat.
Abra seu editor VS Code e crie um novo arquivo chamado issubclass_example.py no diretório ~/project. Copie e cole o seguinte código no arquivo:
## Create a file named issubclass_example.py in the ~/project directory
from animal import Animal, Dog, Cat
print(issubclass(Dog, Animal))
print(issubclass(Cat, Animal))
print(issubclass(Dog, Cat))
print(issubclass(Animal, Dog))
print(issubclass(Animal, Animal))
Este programa importa as classes Animal, Dog e Cat do arquivo animal.py que você criou na etapa anterior. Em seguida, ele usa a função issubclass() para verificar as seguintes relações:
Dogé uma subclasse deAnimal?Caté uma subclasse deAnimal?Dogé uma subclasse deCat?Animalé uma subclasse deDog?Animalé uma subclasse deAnimal?
Para executar o programa, abra seu terminal no VS Code e navegue até o diretório ~/project:
cd ~/project
Em seguida, execute o script issubclass_example.py usando o comando python:
python issubclass_example.py
Você deve ver a seguinte saída:
True
True
False
False
True
Esta saída mostra que:
Dogé uma subclasse deAnimal(True)Caté uma subclasse deAnimal(True)Dognão é uma subclasse deCat(False)Animalnão é uma subclasse deDog(False)Animalé uma subclasse de si mesma (True)
A função issubclass() é útil para verificar as relações de herança entre classes em seu código. Isso pode ser útil para garantir que seu código esteja se comportando conforme o esperado e para escrever um código mais robusto e fácil de manter.
Inspecionar o Atributo bases
Nesta etapa, você aprenderá como inspecionar o atributo __bases__ de uma classe para encontrar suas classes pai diretas. O atributo __bases__ é uma tupla que contém as classes pai de uma classe.
Continuando com o exemplo das etapas anteriores, vamos inspecionar o atributo __bases__ das classes Animal, Dog e Cat.
Abra seu editor VS Code e crie um novo arquivo chamado bases_example.py no diretório ~/project. Copie e cole o seguinte código no arquivo:
## Create a file named bases_example.py in the ~/project directory
from animal import Animal, Dog, Cat
print(Dog.__bases__)
print(Cat.__bases__)
print(Animal.__bases__)
Este programa importa as classes Animal, Dog e Cat do arquivo animal.py que você criou nas etapas anteriores. Em seguida, ele imprime o atributo __bases__ de cada classe.
Para executar o programa, abra seu terminal no VS Code e navegue até o diretório ~/project:
cd ~/project
Em seguida, execute o script bases_example.py usando o comando python:
python bases_example.py
Você deve ver a seguinte saída:
(<class 'animal.Animal'>,)
(<class 'animal.Animal'>,)
(<class 'object'>,)
Esta saída mostra que:
- A classe
Dogherda da classeAnimal. - A classe
Catherda da classeAnimal. - A classe
Animalherda da classeobject, que é a classe base para todas as classes em Python.
O atributo __bases__ é útil para entender a hierarquia de herança de suas classes. Isso pode ser útil para depuração e para escrever um código mais fácil de manter.
Resumo
Neste laboratório, você explorou a herança de classes em Python, um conceito-chave na programação orientada a objetos. Você criou uma classe pai Animal com um construtor e um método speak, e então definiu as classes filhas Dog e Cat que herdaram de Animal.
Essas classes filhas sobrescreveram o método speak para fornecer suas próprias implementações específicas, demonstrando como a herança permite a reutilização e especialização de código. Finalmente, você criou instâncias dessas classes e chamou seus métodos speak para observar as diferentes saídas.



