Gehen durch die Dokumentation von Pylon-Projekt wiki2 Tutorial fand diese Codes und was ich weiß ist eine Klasse hat eine Funktionsdefinition mit Einrückung nach der Klassendeklaration definiert. Überprüft auch die Python-Dokumentation und ist das gleiche, aber die Projektdokumentation hat so etwas wie eine Klassendefinition mit Einrückung und ohne Einrückung. Kann mir jemand das klar machen?Pylon Pyramide Klasse Funktion Definition Einrückung
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
Ich habe die wenigen Zeilen Code aus der Dokumentation eingefügt, als wir die ersten beiden Funktion def eingekerbten sehen können, sind aber die dritte Funktion get_user nicht. Was genau ist der Zweck?
Nicht sicher das Tutorial, aber das 'get_user' Funktion wird vermutlich verwendet, um mit' add_request_method', so dass request.user der aktuelle Benutzer ist (oder None) –
ja das ist genau das, was du meinst, aber frage mich über den Einzug warum ist der Einzug nicht für die Funktionen wie andere Funktionen getan. Wie wir wissen, sind die Klassenmemberfunktionen eingerückt, aber warum nicht hier –
Weil es eine unabhängige Funktion ist, keine Klassenmethode. Es könnte über der Klassendefinition liegen, es würde immer noch funktionieren. –