diff --git a/exercise-1.py b/exercise-1.py index 1323c1b..3ce3626 100644 --- a/exercise-1.py +++ b/exercise-1.py @@ -1,31 +1,30 @@ # encoding: utf-8 - """ Single Responsibility Principle to jedna z zasad SOLID. Mówi ona, że każda klasa powinna mieć tylko jeden obszar odpowiedzialności i tylko jeden powód do zmiany. Poniżej przedstawiono klasę Person, która reprezentuje pojedynczą osobę - jej imię, nazwisko oraz adres mailowy. Jest to przykład złamania tej zasady, ponieważ w środku niej znajduje się walidacja adresu email. - Jako ćwiczenie, spróbuj zrefaktoryzować ten kod tak, aby sama walidacja znalazła się w osobnej klasie reprezentującej adres email. """ - import re import unittest -EMAIL_PATTERN = re.compile(r'^([\w-]+(?:\.[\w-]+)*)@((?:[\w-]+\.)*\w[\w-]{0,66})\.([a-z]{2,6}(?:\.[a-z]{2})?)$') - class Person: - def __init__(self, first_name, last_name, email): + def __init__(self, first_name, last_name): assert isinstance(first_name, str) assert isinstance(last_name, str) - assert isinstance(email, str) - - self.first_name = first_name + + self.first_name = first_name self.last_name = last_name + +class Email: + EMAIL_PATTERN = re.compile(r'^([\w-]+(?:\.[\w-]+)*)@((?:[\w-]+\.)*\w[\w-]{0,66})\.([a-z]{2,6}(?:\.[a-z]{2})?)$') + + def __init__(self, email): if EMAIL_PATTERN.match(email) is None: raise ValueError('Invalid email') else: