Как «помечать» объекты, красиво ли добавлять свои атрибуты в чужие объекты?
В моем случае у меня есть цепочка (list) сертификатов (cryptography.x509), но хотелось бы разобраться в общем случае.
Из этого списка, некоторые сертификаты могут не пройти проверку (например, "протухнуть"). И у нас есть функция (назовем ее verify_chain), которая проверяет сертификаты.
А уже затем, другая функция print_cert печатает каждый сертификат из цепочки (по 1 штуке) и хотелось бы, чтобы она могла напечатать, какой из сертификатов не прошел проверку. Важный момент - проверка и печать разделены, неправильно проверять сертификат без контекста (т.к. он подписан другим сертификатом из цепочки, и без того сертификата он не валиден, а с ним - валиден.).
Как решить задачу - я вижу аж несколько способов, но мне интересно, какой из них идеологически верный?
Самый простой, но спорный - тупо вхерачить в объект чужого класса свой удивительный атрибут и делать вроде `cert.verified = True`. Всем хорош, работать будет, но принято ли так делать в хорошем обществе?
Или делать свой класс (на основе вот этого, стандартного, из чужого пакета) и постоянно конвертироваться между ними, и все это только ради одного булевого поля?
Я бы заставил verify_chain() возвращать список объектов-сертификатов, не прошедших проверку (ну и переименовал бы её соответственно, типа find_broken_certs()). Так как это ссылки на существующие объекты, объём памяти будет затрачен минимальный. Проверить, есть ли в списке хоть один сертификат - тривиально. А если хочется подробностей - вот он список, читай.