Хотя это не связано с Python:
А expression
оценивает значение. A statement
что-то делает.
>>> x = 1
>>> y = x + 1 # an expression
>>> print y # a statement (in 2.x)
2
Что касается любой архитектуры ремоутинга, Вы захотите постараться не загружать полный граф объектов "вниз провод" неконтролируемым способом (если Вы не будете иметь тривиально небольшое количество объектов).
Статья Wikipedia имеет стандартные методы, в значительной степени полученные в итоге (и в C#. также!). Я использовал оба фантома и оцениваю держателей, и они работают вполне прилично.
Для реализации этого вида техники удостоверьтесь, что Вы разделяете проблемы строго. На сервере Ваши классы реализации контракта на обслуживание должны быть единственными битами кода, которые работают с контрактами данных. На клиенте сервисный слой доступа должен быть единственным кодом, который работает с прокси.
Разделение на уровни как это позволяет Вам скорректировать способ, которым сервис реализован относительно независимо от уровней UI, назвав сервис и бизнес-уровень, которым это называют. Это также дает Вам половину шанса поблочного тестирования!
Не делайте ленивой загрузки по сервисному интерфейсу. Определите явный DTO и используйте их, поскольку Ваши данные сокращаются в WCF.
Можно использовать NHibernate (или другой ORMs) для надлежащей выборки объектов, необходимо создать DTOs.
Вы могли попытаться использовать что-то базирующийся REST (например, Услуги передачи данных ADO.NET) и перенести его transpariently в Ваш клиентский код.