Oii Darciane, como você está? Espero que esteja bem ^-^
Muito interessante sua pergunta.
Dizer nitidamente que a classe herda de object vem da versão 2 do python e não é mais necessária. Atualmente, no python 3 não é necessário dizer explicitamente que uma classe herda de object, pois padrão a classe já herda de object. Ou seja, no python 3, escrever class Animal(object)
e class Animal
são iguais. Geralmente você verá códigos escritos sem o object. Exemplo:
class Animal:
pass
Quanto ao uso dos argumentos do nome da classe e do self
ao utilizar o super, também é algo que não é mais necessário no python 3. Essa prática é da versão 2 do python. No python 3 basta fazermos da seguinte forma: super().__init__()
.
Vamos a um exemplo:
- Imagine uma classe
Pessoa
que possui como argumento nome e idade:
class Pessoa:
def __init__(self, nome, idade):
self.nome = nome
self.idade = idade
def __str__(self):
return f'Pessoa: {self.nome} - {self.idade}'
- Agora, vamos a classe
Funcionario
que herda da classe Pessoa
. Que além de nome e idade, também possui um cargo. Observe como fica a chamada do método super:
class Funcionario(Pessoa):
def __init__(self, nome, idade, cargo):
super().__init__(nome, idade) # chamada do método super passando como parâmetro os argumentos que a classe Pessoa recebe
self.cargo = cargo
As formas ditas acimas são válidas para o python 3 e são consideradas boas práticas.
Se tiver ficado alguma dúvida é só falar, tá? Estou por aqui.
Grande abraço!