Как проверить атрибуты перед созданием экземпляра?
Есть класс:
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