Просматривая документацию по проекту pylon wiki2, мы обнаружили, что эти коды и то, что я знаю, имеет определение функции, определенное с отступом после объявления класса. Также проверял документацию на python и тот же, но в документации по проекту есть что-то вроде определения класса с отступом и без отступов. Может ли кто-нибудь объяснить мне это.определение функции класса пирамиды пилона
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
Я вставил несколько строк коды из документации, как мы видим, первые две функции размораживания с отступом, но третья функция get_user нет. в чем же цель.
Не уверен в учебнике, но 'get_user' функция, вероятно, используется с' add_request_method', так что request.user является текущим пользователем (или None) –
да, это именно то, что вы имеете в виду, но меня интересует вопрос о том, почему отступ не выполняется для функций, подобных другим функциям. Поскольку мы знаем, что функции члена класса отступают, но почему бы и нет здесь –
Потому что это независимая функция, а не метод класса. Это может быть выше определения класса, оно все равно будет работать. –