En parcourant la documentation du didacticiel wiki2 du projet pylon trouvé ce code et ce que je sais est une classe a une définition de fonction définie avec indentation après la déclaration de classe. Vérifié la documentation python aussi et est le même, mais la documentation du projet a quelque chose comme une définition de classe avec indentation et sans indentation. Quelqu'un peut-il me faire comprendre à ce sujet?pylône pyramide classe fonction définition indentation
from pyramid.authentication import AuthTktAuthenticationPolicy
from pyramid.authorization import ACLAuthorizationPolicy
from pyramid.security import (
Authenticated,
Everyone,
)
from .models import User
class MyAuthenticationPolicy(AuthTktAuthenticationPolicy):
def authenticated_userid(self, request):
user = request.user
if user is not None:
return user.id
def effective_principals(self, request):
principals = [Everyone]
user = request.user
if user is not None:
principals.append(Authenticated)
principals.append(str(user.id))
principals.append('role:' + user.role)
return principals
def get_user(request):
user_id = request.unauthenticated_userid
if user_id is not None:
user = request.dbsession.query(User).get(user_id)
return user
J'ai collé les quelques lignes de codes de la documentation que nous pouvons voir les deux premiers def fonction sont en retrait, mais la troisième fonction get_user n'est pas. quel est le but exactement.
ne suis pas sûr du tutoriel, mais cette fonction 'get_user' est probablement utilisé avec' add_request_method', de sorte que request.user est l'utilisateur actuel (ou None) –
oui c'est exactement ce que vous voulez dire mais je m'interroge sur l'indentation pourquoi l'indentation n'est pas fait pour les fonctions comme d'autres fonctions. Comme nous le savons, les fonctions membres de la classe sont indentées mais pourquoi pas ici –
Parce que c'est une fonction indépendante, pas une méthode de classe. Il pourrait être au-dessus de la définition de classe, cela fonctionnerait toujours. –