Bird é Filha de Vertebrate, mas tem 2 mixins, Beak e Oviparous.
1) Está correto essa maneira de definir o contrutor de Bird e de chamar os dunder dos mixins?
2) Os mixins estão herdando de ABC. Isso significa que será uma classe abstrata, ou seja, não pode ser instanciada. A dúvida é : metaclass=ABCMeta é usada para criar interfaces?
class Bird(Vertebrate, Beak, Oviparous):
def __init__(self, name):
Vertebrate.__init__(self, name)
def __str__(self):
return f'{Vertebrate.__str__(self)}\n' \
f'{self.name} is a Bird.\n' \
f'{Oviparous.__str__(self)}\n'\
f'{Beak.__str__(self)}'
class Beak (ABC):
@property
def has_beak(self):
return True
def __str__(self):
return f'It has a beak.'
class Oviparous (ABC):
@property
def lay_eggs(self):
return True
def __str__(self):
return f'It can lay eggs.'