Я очень новичок в Python, все API и Stack Overflow.Я хотел подключиться к API отдыха Bricklink и с библиотекой, которую нашел на github.Теперь проблема в том, что в библиотеке есть класс a, который получает экземпляр в другом классе, и если я запускаю код, класс c захочет использовать функцию get из класса a, пройдя через класс b (я действительно не знаю,ребята, это имело какой-то смысл, извините!) Я приведу код для лучшего понимания.(Вот ссылка на библиотеку Bricklink: https://github.com/robbietjuh/py-bricklink)
Я пытался поместить self.client в скобки в надежде, что он получит более высокий приоритет, но он не работает .. Я искал ...для чего-то подобного, но это всегда было слишком трудно понять или не помогало.
class Method: # this is class b
client = None
def __init__(self, client):
self.client = client
class Orders(Method): # this is class c
URL_ORDER_LIST = 'orders'
URL_ORDER_DETAILS = 'orders/{order_id}'
URL_ORDER_ITEMS = 'orders/{order_id}/items'
URL_ORDER_MESSAGES = 'orders/{order_id}/messages'
URL_ORDER_FEEDBACK = 'orders/{order_id}/feedback'
URL_ORDER_UPDATE = 'orders/{order_id}'
URL_ORDER_UPDATE_STATUS = 'orders/{order_id}/status'
URL_ORDER_UPDATE_PAYMENT_STATUS = 'orders/{order_id}/status'
def getOrders(self, direction='in', status='', filed=False):
params = {
'direction': direction,
'status': status,
'filed': filed,
}
return self.client.get(self.URL_ORDER_LIST, params)
приведенный ниже код находится в другом файле
class ApiClient: # this is class a
def __init__(self, consumer_key, consumer_secret, access_token, access_token_secret):
self.service = OAuth1Service(name='bricklink',
consumer_key=consumer_key,
consumer_secret=consumer_secret, base_url='https://api.bricklink.com/api/store/v1/')
self.session = self.service.get_session((access_token, access_token_secret))
self.orders = Orders(self)
def request(self, method, url, params):
if method in ('POST', 'PUT', 'DELETE'):
response = self.session.request(method, url, True, '', data=json.dumps(params), headers={'Content-Type': 'application/json'}).json()
else:
response = self.session.request(method, url, True, '', params=params).json()
return self.processResponse(response, method, url, params)
def get(self, url, params={}): # here is the get function, that is needed to be accessed
return self.request('GET', url, params)
test = ApiClient('consumer_key', 'consumer_secret', 'access_token', 'access_token_secret')
print(test)
meth = a.Method(test)
order = a.Orders(meth)
order.getOrders(direction='in', status='', filed=False)
Ошибка:
Traceback (most recent call last):
File "D:/Python Projects/Neuer Ordner/py-bricklink-master/bricklink/api.py", line 96, in <module>
order.getOrders(direction='in', status='', filed=False)
File "D:\Python Projects\Neuer Ordner\py-bricklink-master\bricklink\a.py", line 36, in getOrders
return self.client.get(self.URL_ORDER_LIST, params)
AttributeError: 'Method' object has no attribute 'get'
Так что он должен дать мне список с order_ids и многими другими, но если я запусту его, я получу только ответ «Объект« Method »не имеет атрибута« get »», и в строках есть ошибки, где явызовите функцию "getOrders (...)" и в "return self.client.get (self.URL_ORDER_LIST, params)", где функция getOrders (...) возвращает значения.