2017-05-13 4 views
0

Ich brauche einige Methoden, die in einer Bibliothek definiert sind. In meinem Modul, ich habeWie kann auf eine Methodenbibliothek zugegriffen werden?

/mymodule/lib/mod.py

Und meine views.py in /mymodule/views.py

In meinem mod.py ich erklärt haben:

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) 

Wie ich meine Methode get_accounts von meinem view.py zugreifen unter der Annahme, dass beide im selben Modul sind?

+0

Können Sie 'ModClient' in view.py instanziieren und dann' instance.get_accounts () 'aufrufen? – JacobIRR

+0

'mod.py',' view.py' klingt sehr nach zwei verschiedenen Modulen für mich! Sie meinen, sie sind im selben Paket ('mymodule.lib möglicherweise')? – schwobaseggl

+0

ja, sorry, differente Pakete, 'views.py' befindet sich in'/mymodule/views.py' – MrMins

Antwort

1

Wenn mymodule ist ein Paket selbst und die darin enthaltenen Ordner in Ihrer Umgebung PYTHONPATH, importieren Sie die Klasse über:

from lib.mod import ModClient 

Dann sollten Sie in der Lage sein, die Klasse in der Ansicht zu instanziiert und rufen Methoden auf der Instanz :

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

Eine richtige IDE (PyCharm, Eclipse, etc.) wird Auto-Importe für Sie tun.

Verwandte Themen