No momento, estou tentando entender metaclasses e, por isso, voltei para atualizar meu conhecimento sobre super() e type.
Enquanto atualizava, me deparei com um artigo super() do geeksforgeeks e ele tinha um exemplo um tanto estranho.
aqui está o exemplo
class Animals:
# Initializing constructor
def __init__(self):
self.legs = 4
self.domestic = True
self.tail = True
self.mammals = True
def isMammal(self):
if self.mammals:
print("It is a mammal.")
def isDomestic(self):
if self.domestic:
print("It is a domestic animal.")
class Dogs(Animals):
def __init__(self):
super().__init__()
def isMammal(self):
super().isMammal() <- Why do this?
Entendo que, ao herdar de uma classe pai, funções como essa __init__
precisam ser chamadas para serem inicializadas, daí a pergunta: " super().__init__()
mas por que fazer isso também na função?"? Eu pensava que funções eram herdadas. Isso é para que possamos executar a função pai junto com as modificações?
Por que não chamar uma função pai dentro de uma nova função?
def mammal_can_dance(self):
self.isMammal()
print("and can dance")