0
respostas

Há erro na minha Factory?

import re


class TipoTelefone:

    @staticmethod
    def tipo(numero):
        numero = str(numero)
        padrao_telefone = "([0-9]{2})([0-9]{2})([0-9]{4})([0-9]{4})"
        padrao_celular = "([0-9]{2})([0-9]{2})([0-9]{5})([0-9]{4})"

        resposta_tel = re.findall(padrao_telefone, numero)
        resposta_cel = re.findall(padrao_celular, numero)

        if resposta_tel:
            return TelefonesBr(numero)
        elif resposta_cel:
            return CelularesBr(numero)
        else:
            raise ValueError("O número de telefone/celular não é válido")


class TelefonesBr:
    def __init__(self, telefone):
        self.numero = telefone

    def __str__(self):
        return self.format() + " este é um número de telefone."

    def format(self):
        padrao = "([0-9]{2})([0-9]{2})([0-9]{4})([0-9]{4})"
        resposta = re.search(padrao, self.numero)
        numero_formatado = "+{} ({}) {}-{}". format(
            resposta.group(1),
            resposta.group(2),
            resposta.group(3),
            resposta.group(4),
        )
        return numero_formatado

class CelularesBr:
    def __init__(self, telefone):
        self.numero = telefone

    def __str__(self):
        return self.format() + " este é um número de celular."

    def format(self):
        padrao = "([0-9]{2})([0-9]{2})([0-9]{5})([0-9]{4})"
        resposta = re.search(padrao, self.numero)
        numero_formatado = "+{} ({}) {}-{}". format(
            resposta.group(1),
            resposta.group(2),
            resposta.group(3),
            resposta.group(4),
        )
        return numero_formatado

Nos meus testes, só retorna "este é um número de telefone".