Python - Создание самовоспроизводящегося экземпляра класса-объекта - PullRequest
1 голос
/ 18 марта 2012

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

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

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

Ответы [ 2 ]

1 голос
/ 18 марта 2012

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

def replicate(self, ...):
    clone = copy.deepcopy(self)
    # Modify clone if necessary
    network.add(clone)
1 голос
/ 18 марта 2012

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

...