подскажите пожалуйста как правильно организовать валидатор полей формы, который соответствовал бы принципу открытости закрытости. ниже привожу код моей попытки, но он плох потому, что при добавлении новых полей в форму, придётся менять уже существующий код(в частности метод check_registration)

 import re
class Validator:
    def __init__(self):
        self.password_min_length = 6
        self.username_max_length = 20
        self.regex_username = "^[A-Za-z0-9]*$"
        self.regex_email = "^[\w\.\+\-]+\@[\w]+\.[a-z]{2,3}$"
    def check_registration(self, form):
        errors_username = self._errors_username(form['username'])
        errors_email = self._errors_email(form['email'])
        errors_passwords = self._errors_passwords(form['password1'], form['password2'])
        errors = []
        errors.extend(errors_username)
        errors.extend(errors_email)
        errors.extend(errors_passwords)
        return errors
    def _errors_email(self, email):
        if bool(re.search(self.regex_email, email)):
            return []
        else:
            return ['Введите корректный email']
    def _errors_username(self, username):
        errors = []
        if len(username) == 0:
            errors.append('Введите имя')
        if len(username) > self.username_max_length:
            errors.append('Имя слишком длинное')
        if not re.match(self.regex_username, username):
            errors.append('Имя содержит недопустимые символы')
        return errors
    def _errors_passwords(self, password1, password2):
        errors = []
        if len(password1) != len(password2):
            errors.append('Пароли не совпадают')
        if len(password1) == 0 and len(password2) == 0:
            errors.append('Пароли не введены')
        elif len(password1) < self.password_min_length or len(password2) < self.password_min_length:
            errors.append('Пароль слишком короткий')
        return errors

Как видите, мой валидатор работает следующим образом:
1. проверки конкретных полей находятся в приватных методах: _errors_email(), _errors_username(), _errors_passwords()
2. эти приватные методы поочерёдно вызываются из метода check_registration()
3. в результате, метод check_registration() для валидной формы возвращает пустой список, а для невалидной формы - список, заполненный сообщениями об ошибках

и вообще, стоит ли заморачиваться? я видел подобный подход в вполне серьёзных проектах. может, быть оставить всё как есть сейчас?