- Polimorfismo e arrays 04 Método abstrato 05min
Nesta imagem, acima, iestá o código que eu digitei no Google Colab do abstractMethod que foi passado e aula e foi feito o comentário:
"[01:45] Faltou importar o que eu tenho que importar. Para isso, eu faço from abc import ABCMeta, abstractmethod. Usamos o ABCmeta como uma meta classe, metaclass. É uma configuração que precisamos colocar: class Conta(metaclass=ABCMeta):. O abstractmethod já está no nosso código, mais abaixo."
Fiz o import, mas a execução retornou erro, o que não foi explicado. Não percebi, até o momento, erro de digitação de minha parte. Segue o código:
#ABCMeta
from abc import abstractmethod
class Conta(metaclass=ABCMeta):
def __init__(self, codigo):
self._codigo = codigo
self._saldo = 0
def deposita(self, valor):
self._saldo += valor
#raise NotImplementedError
@abstractmethod
def passa_o_mes(self):
pass
def __str__(self):
return "[>>Codigo {} Saldo {}<<]".format(self._codigo, self._saldo)
Segue o retorno da execução do código no Google Colab:
NameError Traceback (most recent call last)
<ipython-input-13-c425df9d9c53> in <module>
2 from abc import abstractmethod
3
----> 4 class Conta(metaclass=ABCMeta):
5
6 def __init__(self, codigo):
NameError: name 'ABCMeta' is not defined
Segue o mesmo código fornecido na aula:
from abc import ABCMeta, abstractmethod
class Conta(metaclass=ABCMeta):
def __init__(self, codigo):
self.codigo = codigo
self.saldo = 0
def deposita(self, valor):
self._saldo += valor
@abstractmethod
def passa_o_mes(self):
pass
def __str__(self):
return "[>>Codigo {} Saldo {}<<]".format(self.codigo, self.saldo)
Em seguida na aula: "[02:15] Agora vou rodar o código, interpretou e vou tentar criar uma conta normal. Já deu erro, porque a classe Conta virou uma classe abstrata. Ela tem um método abstrato e não pode ser instanciada, porque ainda não implementaram todos os métodos abstratos, o método passa_o_mês()."
Aqui é que não entendo, pois no Google Colab o retorno indica que o nome ABCMeta não está definido, minha pegunta: Não está definido no código? Ou porque não está implementado como relatado acima? Por que apenas apresentar algo que não está implementado? Por que não apresentou algo semelhante (se é que existe) que esteja implementado para comparar?
Segue linnk do Colab para a respectiva aula 03-Polimorfismo_Arrays.ipynb
:) Obrigado.