Получение всех невалидных атрибутов класа

Есть клас в котором атрибуты присваиваются через сеттеры, следовельно при инициализации выдатется ошибка, если переданы невалидные агрументы. Но отловить мы можем только первую случившуюся ошибку, можно ли отловить все не прибегая к if/else деревьям?

Пример:

class Validation:
    def is_name(val):
        if not name(val):
             raise ValueError(f'Invalid name {val}')

    def is_id(val):
        if not id(val):
             raise ValueError(f'Invalid id {val}')
 
class Freelancer:

    def __init__(self, id_, name):
        self.id = id_
        self.name = name
    
    @id.setter
    @Validation.is_id
    def id(self, value):
        self.__id = value

    @name.setter
    @Validation.is_name
    def name(self, value):
        self.__name = value


main():
   a = Freelancer("notID", 1233)
   # Выдаст ошибку "Invalid id ...", а нужно чтобы еще выдавало "Invalid name..."  


Ответы (1 шт):

Автор решения: Alexey Loskutov

Попробуйте ловить исключения:

try:
    a = Freelancer("notID", 1233)
except ValueError as err:
    print("ValueError: {0}".format(err))

данными после этого пользоваться дальше в коде конечно нельзя, потому что у вас что-то вставилось, что-то нет.

→ Ссылка