Я предпочитаю гибкий adoptation UML (например, эскизы белой доски) по водопад адаптация UML (например, чрезмерные документы тщательно продуманных схем, оттянутых в Visio).
UML все еще полезен для объяснения дизайна кому-то еще. Например, составной шаблон разработки легко объяснить с простыми диаграммами классов (то есть, после того, как Вы будете сделаны с теми интересными аналогиями).
Несколько нарисованных от руки диаграмм классов и диаграмм последовательности удобны для получения быстрого запуска, когда сталкивающийся с новым или старым проектом с классами, замусоренными повсеместно и без достаточно хорошей документации.
Моя команда также успешно использует диаграммы классов для генерации схем базы данных. Возможно, существуют лучшие пути, но это - другой вопрос.
Вы можете сделать это с помощью copy_reg.pickle
. В Python 2.6:
import copy_reg
import types
def reduce_method(m):
return (getattr, (m.__self__, m.__func__.__name__))
copy_reg.pickle(types.MethodType, reduce_method)
Здесь не сохраняется код метода, только его имя; но в общем случае это будет работать правильно.
Это делает работу и травление, и копирование!
REST - Передача состояния представления. Просто отправьте состояние, а не методы.
Чтобы передать объект X из A в B, мы делаем это.
A кодирует состояние X в некоторых удобные, простые для анализа обозначения. JSON
A отправляет текст JSON в B.
B декодирует состояние X из JSON обозначение, реконструирующее X.
B должен иметь определения класса X, чтобы это работало. B должен иметь все функции и определения других классов, от которых зависит класс X. Короче говоря, оба A и B имеют все определения. Перемещается только представление состояния объекта вокруг.
См. любую статью о REST.
http://en.wikipedia.org/wiki/Representational_State_Transfer
выбрать экземпляр и затем получить доступ к методу после его удаления. Выбор метода экземпляра не имеет смысла, потому что он зависит от экземпляра. Если нет, то запишите это как независимую функцию.
import pickle
class A:
def f(self):
print 'hi'
x = A()
f = open('tmp', 'w')
r = pickle.dump(x, f)
f.close()
f = open('tmp', 'r')
pickled_x = pickle.load(f)
pickled_x.f()