Classes abstratas python

Como criar uma classe abstrata no python?
nos exemplos que encontrei:
importa from abc import ABCMeta,abstractmethod
e define metaclass = ABCMeta
mais mesmo com isso ainda consigo instanciar.

Bom dia amigo

depende do python que você está utilizando a partir da versão 3.4 é dessa forma:

from abc import ABC, abstractmethod
from datetime import date

class Pessoa(ABC):
    @abstractmethod
    def calcularIdade(self, dataNascimento):
        idade = date.today().year - dataNascimento.year
        return str(idade) + " anos"

class PessoaFisica(Pessoa):
    def __init__(self):
        pass

    def calcularIdade(self, dataNascimento):
        return super().calcularIdade(dataNascimento)


p = PessoaFisica()
print(p.calcularIdade(date(1987,12,14)))
p2 = Pessoa()
print(p2.calcularIdade(date(1987,12,14)))

Resultado:

image

Boa sorte :metal::sunglasses::metal:

1 curtida

minha classe é a seguinte:
class pessoa(ABC):
def init(self):
self.__nome_competo = None
self.__idade = None
self.__CPF = None
self.__RG = None
self.__pais = None
self.__lugar = None
self.__email = None

não possui métodos abstratos então coloquei o “@abstractmethod” encima do “construtor” e funcionou.

class pessoa(ABC):
@abstractmethod
def init(self):
self.__nome_competo = None
self.__idade = None
self.__CPF = None
self.__RG = None
self.__pais = None
self.__lugar = None
self.__email = None