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".