Я изучаю Python (исходящий из фона dotnet) и разрабатывая приложение, которое взаимодействует с веб-сервисом.Python - передача объектов ссылки?
Веб-сервис является плоским, поскольку он имеет множество вызовов, некоторые из которых связаны с сеансами, например. протоколирование и т. д., тогда как другие вызовы связаны с извлечением/настройкой бизнес-данных.
Для сопровождения веб-сервиса есть несколько классов python, которые переносят все вызовы. Я ищу, чтобы разработать клиента поверх этого класса, но придать клиенту больше структуры OO.
Дизайн моего собственного приложения состоял в том, чтобы иметь класс Session-type, который будет отвечать за ведение журнала/поддержание соединения и т. Д., Но сам будет введен в класс бизнес-класса, который несет ответственность за создание всего бизнеса звонки.
Так стек что-то вроде
WebService (Soap)
WebServiceWrapper (Python)
Session (Python)
Business (Python)
Вот пример моего кода (я переименовал некоторые методы, чтобы попытаться сделать вещи более четко)
from webServiceWrapper import webServiceAPI
class Session():
def __init__(self, user, password):
self._api = webServiceAPI()
self.login = self._api.login(user, password)
def webServiceCalls(self):
return self._api()
class Business():
def __init__(self, service):
self._service=service
def getBusinessData(self):
return self._service.get_business_data()
и мой блок тест
class exchange(unittest.TestCase):
def setUp(self):
self.service = Session("username","password")
self._business = Business(self.service.webServiceCalls())
def testBusinessReturnsData(self):
self.assertFalse(self._business.getBusinessData()==None)
Неисправность модуля испытаний не выполнена
return self._api()
о том, что базовый класс не отозван
TypeError: 'webServiceAPI' is not callable
Моего первый д есть, что питон путь? Является ли мышление ОО, которое поддерживает развитие приложений со статическими языками, хорошо подходит и для динамических? (Это, вероятно, довольно большой q!)
Мой второй q заключается в том, что, если такая архитектура в порядке, что я делаю неправильно (я думаю, в терминах передачи ссылок на объекты таким образом)?
Многие ТНХ
S
какой * есть * webServiceAPI?если python говорит, что не вызываемый, ну, что бы это ни было, он не может быть вызван – shylent
Кажется, что ваш 'webServiceAPI' не определяет' __call__'. – kennytm
также, вы должны взглянуть на руководство по стилю кода http://www.python.org/dev/peps/pep-0008/ и, предпочтительно, следовать ему – shylent