Как проверить атрибуты перед созданием экземпляра?

Есть класс:

class CarBase:
    def __init__(self, brand, photo_file_name, carrying):
        self.brand = brand
        self.photo_file_name = photo_file_name
        self.carrying = float(carrying)

Перед созданием экземпляра необходимо проверить self.carrying на тип float и int. И если атрибут не соответствует этим типам, то не создавать объект.

Можно ли сделать эту проверку в __init__, если да, как это сделать?


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

Автор решения: MaxU

я бы сделал это так:

class CarBase:
    def __init__(self, brand, photo_file_name, carrying):
        self.brand = brand
        self.photo_file_name = photo_file_name
        try:
            self.carrying = float(carrying) 
        except ValueError:
            raise TypeError(f"parameter `carrying` must be of either `int` or `float` type")

это более мягкая проверка по сравнению с isinstance(carrying, (int, float)), которая также позволит пользователю использовать строки, которые можно успешно сконвертировать во float

→ Ссылка