Как использовать общие данные для нескольких объектов?
Требуется создать несколько однотипных объектов, каждый из которых имеет некоторое поле, которое для всех объектов должно отличаться. Проблема в том, что эти объекты создаются в разный промежуток времени и из разных частей программы. Как отслеживать уникальность таких полей в объектах? Если сделать статический массив в самом классе, и в него добавлять уникальное поле уже существующих объектов? Или лучше вести отдельный список этих полей, но тогда этот список придется везде с собой таскать.
Boris19, ну т.е. постоянного хранилища нет, объекты живы только во время работы программы.
longclaps дал вам дельный ответ.
set использовать для этой цели самое то именно потому, что в нём очень дешёвая операция проверки наличия элемента.
В качестве идентификатора можете использовать натуральные данные (имя, путь к файлу, и т.п.), либо приводить эти натуральные данные к суррогатному виду (хэш).
classproperty - тут просто имеется ввиду свойство, объявленное в самом классе - оно будет принадлежать всем объектам этого класса, и вы будете иметь к нему доступ для проверки/записи туда новых данных.
Boris19, если это поле не меняется после создания - приведи его к хэшируемому виду (например, упихай всё в кортеж), а в classproperty держи set этих кортежей.
Boris19,
Как отслеживать уникальность таких полей в объектах? - футпринт каждого кладёшь в сет, если такого там еще нет, иначе - кидай своё исключение.
Для чего classproperty, это ведь просто обертка для статического поля? - ну тебе же "Требуется создать несколько однотипных объектов", самое место для их футпринтов - в статическом поле их класса, хотя, конечно, можно и в глобальный неймспейс сунуть - если тебе такое по душе.
Да, только тут я под id имел ввиду не идентификатор, а любые данные, которые должны быть уникальны для данного объекта, например, имя, или путь к файлу и тд.