Проблема с валидацией емейла

Finch

Новичок
Пользователь
Апр 30, 2022
15
1
3
Добрый день, собстна есть задача
Create a class method named `validate`, which should be called from the `__init__` method to validate parameter email, passed to the constructor. The logic inside the `validate` method could be to check if the passed email parameter is a valid email string.

Написал вот такую штуку, только почему то нет связи re.match з переменной email. и соответственно валидация не проходит. в условии сказано что должен быть именно класс метод.
Python:
import re
class Email:

    def __init__(self,email):
        self.email = email


    @classmethod
    def validate(cls):
        if re.match(r"(^[a-zA-Z0-9_.+-]+@[a-zA-Z0-9-]+\.[a-zA-Z0-9-.]+$)", email):
            print("Email is valid")
        else:
            print("Email is invalid")


email1 = Email('popy@gmail.com')
email2 = Email('Bob1990@mail.com')
email3 = Email('Johnygmail.com')
email4 = Email('boby.com')

print(email1.validate)
 

rccp

Новичок
Пользователь
Май 12, 2022
13
2
3
Тебе нужно вызвать метод validate для проверки емайла, а ты просто определил validate и не вызываешь его:


Python:
import re
class Email:

    def __init__(self,email):
        type(self).validate(email) # или self.__class__['validate'](email)
        self.email = email


    @classmethod
    def validate(cls, email):
        if not re.match(r"(^[a-zA-Z0-9_.+-]+@[a-zA-Z0-9-]+\.[a-zA-Z0-9-.]+$)", email):
            raise TypeError(f'Email {email} is invalid')


email1 = Email('popy@gmail.com')
email2 = Email('Bob1990@mail.com')
email3 = Email('Johnygmail.com')
email4 = Email('boby.com')
 
  • Мне нравится
Реакции: Vershitel_sudeb

Finch

Новичок
Пользователь
Апр 30, 2022
15
1
3
Тебе нужно вызвать метод validate для проверки емайла, а ты просто определил validate и не вызываешь его:


Python:
import re
class Email:

    def __init__(self,email):
        type(self).validate(email) # или self.__class__['validate'](email)
        self.email = email


    @classmethod
    def validate(cls, email):
        if not re.match(r"(^[a-zA-Z0-9_.+-]+@[a-zA-Z0-9-]+\.[a-zA-Z0-9-.]+$)", email):
            raise TypeError(f'Email {email} is invalid')


email1 = Email('popy@gmail.com')
email2 = Email('Bob1990@mail.com')
email3 = Email('Johnygmail.com')
email4 = Email('boby.com')
Получится что на Johnygmail.com будет райз еррор и валидация окончится, хотя внизу еще есть неверный емеил
 

rccp

Новичок
Пользователь
Май 12, 2022
13
2
3
Получится что на Johnygmail.com будет райз еррор и валидация окончится, хотя внизу еще есть неверный емеил
Ага, мы не даем инициализировать класс, если в емейле есть ошибка. Можно принты вернуть если нужны)
 

Форум IT Специалистов