2017-05-13 41 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等)将为您自动导入。