2012-03-18 3 views
1

Я пытаюсь найти способ создания созданного экземпляра, который действует как среда для n-многих под-экземпляров внутри; например, иметь общий «сетевой» экземпляр с несколькими динамически взаимосвязанными объектами внутри. Моя нынешняя идея состоит в том, чтобы экземпляр сети был сначала создан, а затем начальный под-объект, созданный внутри. Сеть будет иметь возможность получать входные данные и отправлять выходные данные, и эти входы передаются под-объектами, а под-объекты совместно образуют вывод для отправки.Python - Создание самовоспроизводящегося экземпляра класса-объекта

Что мне нужно, это способ, которым может быть ячейка, когда выполняются определенные параметры, взять себя и создать новый объект, который является копией самого себя, но с другим именем и вставкой разных сохраненных данных; не заменяя оригинал, а расширяя коллектив в сетевом экземпляре. Таким образом, это позволит использовать систему, подобную базе данных, которая может динамически расширяться, не сообщая установленный диапазон имен объектов, но иметь возможность саморепликации. Если бы это было возможно, объекты бы реплицировались как их экземпляры и не вызывали их класс, но я полностью открыт для идей.

Я смог проверить вручную создание отдельных объектов и связать их с тем, как я хотел бы, но все же не смог получить упрощенный способ саморепликации класса объектов по своей собственной инициативе. Так вот что мне действительно нужно, извините за стену текста и спасибо за чтение.

ответ

1

Любой объект в новом стиле может получить ссылку на свой класс, обратившись к своему атрибуту __class__. Оттуда он может вызывать конструктор, манипулировать атрибутами класса и т. Д.

+0

Спасибо, это, кажется, дает самый прямой путь для достижения моей цели, обеспечивая гибкость. – Findeccano

1

Если вы хотите реплицировать текущее состояние объекта таким образом, чтобы он мог быть изменен независимо от родительского объекта, используйте copy.deepcopy (или, возможно, в зависимости от значений в вашем объекте, copy.copy достаточно.) Я бы предложил, чтобы объект создал свою копию и вызывал метод объекта-контейнера (сети) для хранения копии.

def replicate(self, ...): 
    clone = copy.deepcopy(self) 
    # Modify clone if necessary 
    network.add(clone) 
Смежные вопросы