Herança¶
class Cao:
qtd_patas = 4
carnívoro = True
nervoso = False
def __init__(self, nome, data_nascimento=None):
self.nome = nome
self.data_nascimento = data_nascimento
def latir(self, vezes=1):
""" Latir do cão. Quanto mais nervoso mais late. """
vezes += self.nervoso * vezes
latido = 'Au! ' * vezes
print('{}: {}'.format(self.nome, latido))
class GoldenRetriever(Cao):
def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
self.itens = []
def pega(self, item):
""" busca/pega um item quando ordenado """
self.itens.append(item)
print('{} pegou {}'.format(self.nome, item))
def devolve(self, item=None):
""" devolve um item, caso o item não seja especificado retorna o último """
if not self.itens:
print('{} não está segurando item algum!'.format(self.nome))
return
if not item:
item = self.itens.pop()
elif item not in self.itens:
print('{} não está segurando {}!'.format(self.nome, item))
return
else:
self.itens.remove(item)
print('{} devolve {}'.format(self.nome, item))
return item
def devolve_ultimo(self):
if not self.itens:
print('{} não está segurando item algum!'.format(self.nome))
return
return self.itens.pop()
class Pinscher(Cao):
nervoso = True
def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
def latir(self, vezes=1):
vezes *= 2
super().latir(vezes)
>>> rex = Cao('Rex')
>>> rex.qtd_patas
4
>>> rex.nome
'Rex'
>>> rex.latir()
Rex: Au!
>>> rex.latir(5)
Rex: Au! Au! Au! Au! Au!
>>> rex.nervoso
False
>>> rex.nervoso = True
>>> rex.latir()
Rex: Au! Au!
>>> rex.latir(5)
Rex: Au! Au! Au! Au! Au! Au! Au! Au! Au! Au!
>>> nana = GoldenRetriever('Nana')
>>> nana.nome
'Nana'
>>> nana.nervoso
False
>>> nana.carnívoro
True
>>> nana.latir()
Nana: Au!
>>> nana.latir(5)
Nana: Au! Au! Au! Au! Au!
>>> nana.itens
[]
>>> nana.pega('bola')
Nana pegou bola
>>> nana.itens
['bola']
>>> nana.devolve()
Nana devolve bola
'bola'
>>> nana.devolve()
Nana não está segurando item algum!
>>> toto = GoldenRetriever('Totó')
>>> toto.nome
'Totó'
>>> toto.itens
[]
>>> toto.pega('chinelo')
Totó pegou chinelo
>>> toto.pega('bola')
Totó pegou bola
>>> toto.itens
['chinelo', 'bola']
>>> toto.devolve_ultimo()
'bola'
>>> toto.devolve('meia')
Totó não está segurando meia!
>>> toto.devolve('chinelo')
Totó devolve chinelo
'chinelo'
>>> toto.devolve_ultimo()
Totó não está segurando item algum!
>>> from datetime import date
>>> totó = GoldenRetriever('Totó', date(2017, 4, 26))
>>> totó.data_nascimento
datetime.date(2017, 4, 26)
>>> print(totó.data_nascimento)
2017-04-26
>>> fido = GoldenRetriever('Fido')
>>> print(fido.data_nascimento)
None
>>> mimi = Pinscher('Mimi')
>>> mimi.nervoso
True
>>> mimi.nome
'Mimi'
>>> mimi.latir()
Mimi: Au! Au! Au! Au!
>>> mimi.latir(5)
Mimi: Au! Au! Au! Au! Au! Au! Au! Au! Au! Au! Au! Au! Au! Au! Au! Au! Au! Au! Au! Au!
>>> isinstance(mimi, GoldenRetriever)
False
>>> isinstance(mimi, Pinscher)
True
>>> isinstance(mimi, Cao)
True