请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

current_app

当 from flask import current_app 的时候,代码执行到这一句的时候current_app是unbound,那么即使我接下来手动将一个AppContent入栈,我认为current_app不会变化(事实他变了),我的想法是current_app在导入进来的一瞬间值是什么就是什么,除非在AppContent入栈后重新获取一遍current_app。但是我们的代码并没有呀,为啥会这样子

正在回答

2回答

7七月 2018-04-23 03:19:45

curren_app又不是你实例化的,为什么是不变的呢?每一次去引用current_app都会去读栈顶元素啊,栈顶元素不同读到自然不同。

1 回复 有任何疑惑可以回复我~
Mark24 2018-04-22 20:54:01

current_app指向的是栈顶,一个地址。他一直指向这个位置。当他读到的内容是空就是 unbound,当你压入实际的Flask app,那么该指针指向的位置就存在值了,调用的时候就会有返回。

0 回复 有任何疑惑可以回复我~
  • 提问者 西湖个莲 #1
    好像不是这样的,今天我研究了一下,这个东西涉及到一种代理机制
    回复 有任何疑惑可以回复我~ 2018-04-22 21:15:45
  • 提问者 西湖个莲 #2
    当你每一次去获取current_app的属性的时候,因为这是个LocalProxy,所以都会去执行这个对象__getattr__方法,实际在这个方法内部重新调用了find_app()来获取当前栈顶的app,所以表面上看起来这两个对象指向了同一个地址
    回复 有任何疑惑可以回复我~ 2018-04-22 21:28:29
  • 7七月 回复 提问者 西湖个莲 #3
    是这样的啊,我课程里好像讲了 是依靠find_app这个可调用对象来获取的。
    回复 有任何疑惑可以回复我~ 2018-04-23 03:20:26
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信