2017-05-13 5 views
0

私はライブラリで定義されたいくつかのメソッドを消費する必要があります。私のモジュールで 、私は私が宣言している私のmod.pyメソッドのライブラリにアクセスするには?

/mymodule/views.py

/mymodule/lib/mod.py

そして、私のviews.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

'ModClient'をview.pyでインスタンス化し、' instance.get_accounts() 'を呼び出すことができますか? – JacobIRR

+0

'mod.py'、' view.py'は私にとって2つの異なるモジュールに非常に似ています!あなたは彼らが同じパッケージに入っていることを意味します( 'mymodule.libおそらく')? – schwobaseggl

+0

はい、申し訳ありません、differenteパッケージ、 'views.py'は'/mymodule/views.py'にあります – MrMins

答えて

1

mymodule場合はパッケージそのものであり、その含まれているフォルダは、ご使用の環境のPYTHONPATHは、経由してクラスをインポートしている:そして、あなたはビューでクラスをインスタンス化し、インスタンスのメソッドを呼び出すことができるはず

from lib.mod import ModClient 

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

適切なIDE(PyCharm、Eclipseなど)が自動的にインポートされます。

関連する問題