flask의 Request.method 문 실행 프로세스
실행 프로세스:
request :
request = LocalProxy(partial(_lookup_req_object, "request"))
# request :
# self._LocalProxy__local=partial(_lookup_req_object, "request")
# self.__wrapped__=partial(_lookup_req_object, "request")
1. request.method :
request = LocalProxy(partial(_lookup_req_object, "request"))
request.method = LocalProxy(partial(_lookup_req_object, "request")).method
2. request __getattr__ , :partial(_lookup_req_object, "request").method
def __getattr__(self, name): # name=method
if name == "__members__":
return dir(self._get_current_object())
# getattr(self._get_current_object(), 'method'), self=LocalProxy
# self._get_current_object() = partial(_lookup_req_object, "request")
# :getattr(self._get_current_object(), 'method') = partial(_lookup_req_object, "request").method
return getattr(self._get_current_object(), name)
def _get_current_object(self):
"""Return the current object. This is useful if you want the real
object behind the proxy at a time for performance reasons or because
you want to pass the object into a different context.
"""
if not hasattr(self.__local, "__release_local__"):
# self.__local = partial(_lookup_req_object, "request")
return self.__local()
try:
return getattr(self.__local, self.__name__) # :object.__setattr__(self, "_LocalProxy__local", local)
except AttributeError:
raise RuntimeError("no object bound to %s" % self.__name__)
3. partial(_lookup_req_object, "request").method
partial(_lookup_req_object, "request").method = partial(_lookup_req_object, "request").method = _lookup_req_object("request").method
:_lookup_req_object("request").method
_lookup_req_object("request") request ( ), request method
def _lookup_req_object(name): # name="request"
# self._local.stack[-1]--( id/ )
top = _request_ctx_stack.top
if top is None:
raise RuntimeError(_request_ctx_err_msg)
# :self._local.stack[-1].request request
return getattr(top, name)
개인 속성의 정의 및 획득:
class A(object):
def __init__(self):
#
object.__setattr__(self, '_A__gender', 'male')
self._A__name = 'wyq'
self.__age = 28
def __call__(self, *args, **kwargs):
#
print(self.__name)
print(self._A__name)
print(self.__age)
print(self._A__age)
print(self.__gender)
print(self._A__gender)
a = A()
a()
#
print(a._A__name)
print(a._A__age)
print(a._A__gender)
전재 대상:https://www.cnblogs.com/wuyongquan/p/11375637.html
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.