2017-05-13 42 views
0

我需要消耗庫中定義的一些方法。 在我的模塊,我有如何訪問方法庫?

/mymodule/lib/mod.py

/mymodule/views.py

而我views.py在我mod.py我宣佈:

class ModClient(object): 
    """REST client for Mod API""" 

    def __init__(self, client_id, secret, environment): 
     self.client_id = client_id 
     self.secret = secret 
     self.environment = environment 

    def _base_url(self): 
     base_url = '' 
     if self.environment == 'sandbox': 
      base_url = 'https://sandbox.mod.com' 
     elif self.environment == 'development': 
      base_url = 'https://development.mod.com' 
     elif self.environment == 'production': 
      base_url = 'https://production.mod.com' 
     return base_url 


    def _base_params(self): 
     params = { 
      'client_id': self.client_id, 
      'secret': self.secret 
     } 
     return params 

    def _parse_response(self, response): 
     result = response.json() 
     if response.status_code != 200: 
      raise ModClientException(message='HTTP status {}: {}'.format(response.status_code, result), 
             http_status=response.status_code, 
             error_type=result.get('error_type', None), 
             error_code=result.get('error_code', None)) 
     return result 

    def get_accounts(self, access_token): 
     url = '{}/accounts/get'.format(self._base_url()) 
     params = self._base_params() 
     params['access_token'] = access_token 
     response = requests.post(url, json=params) 
     return self._parse_response(response) 

如何我可以從我view.py訪問我的方法get_accounts假設兩者都在同一個模塊中?

+0

你可以在view.py中實例化'ModClient',然後調用'instance.get_accounts()'? – JacobIRR

+0

'mod.py','view.py'聽起來很像兩個不同的模塊給我!你的意思是它們在同一個包裏('mymodule.lib可能')? – schwobaseggl

+0

yes,sorry,differente packages,'views.py'在'/ mymodule/views.py'中 – MrMins

回答

1

如果mymodule是包裝本身及其包含的文件夾是在您的環境PYTHONPATH,通過導入類:

from lib.mod import ModClient 

那麼你應該能夠將類實例的視圖,並調用實例方法:

mc = ModClient() 
accounts = mc.get_accounts(token) 

適當的IDE(PyCharm,Eclipse等)將爲您自動導入。