2016-10-04 2 views
2

Je suis nouveau à Python et j'étudie Pyramid pour apprendre à écrire du bon code. J'ai écrit ce code usine racine:pyramid.util.Request code source

class RootFactory(object): 
    def __acl__(self): 
     return [ 
      (Allow, 'group:alfa', 'alfa'), 
     ] 

    def __init__(self, request): 
     print(type(request)) 
     pass 

et le résultat montre que « demande » est <class 'pyramid.util.Request'> mais si j'ouvre le module pyramid.util.py, pour voir le code source, je ne suis pas trouvé la demande de classe. Je pense que cette classe est dans le module pyramid.request.py

Quelqu'un pourrait-il expliquer comment cela fonctionne?

+0

Oui. C'est 'pyramid.request.Request'. La seule raison pour laquelle je pense qu'il pourrait s'agir de 'pyramid.util.Request' est une sorte de raison d'alias d'importation. Peut-être lié à votre base de code. –

Répondre

2

Il s'agit d'un détail d'implémentation de l'utilisation de config.add_request_method. Lors de l'ajout de méthodes de requête, un nouvel objet de classe est créé en utilisant le InstancePropertyHelper qui se trouve dans le module pyramid.util. Cela pourrait probablement être réparé, mais à la fin de la journée, la classe qui nous intéresse est pyramid.request.Request donc vous devriez regarder là pour les problèmes.