Flask之上下文管理

Posted weidaijie

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Flask之上下文管理相关的知识,希望对你有一定的参考价值。

上下文管进阶理解

 1.偏函数

import functools
def index(a1,a2):
    return a1 + a2
# 原来的调用方式
# ret = index(1,23)
# print(ret)
# 偏函数,帮助开发者自动传递参数
new_func = functools.partial(index,666)
ret = new_func(1)
print(ret)

 2.执行父类方法

class Base(object):
    def func(self):
        print(‘Base.func‘)
class Foo(Base):
    def func(self):
        # 方式一:根据mro的顺序执行方法
        # super(Foo,self).func()
        # 方式二:主动执行Base类的方法
        # Base.func(self)

        print(‘Foo.func‘)
obj = Foo()
obj.func()

# print(Foo.__mro__)

 3、面向对象的特殊方法

一
class Foo(object):
    def __init__(self):
        self.storage = {}
        # object.__setattr__(self,‘storage‘,{})

    def __setattr__(self, key, value):
        print(key,value)

obj = Foo()
obj.xx = 123

结果
storage {}
xx 123

二
class Foo(object):
    def __init__(self):
        self.storage = {}
        # object.__setattr__(self,‘storage‘,{})

    def __setattr__(self, key, value):
        print(key,value,self.storage)  # 打印self.storage会报错,因为实例化对象先执行
        #init,init中self.storage会触发seattr方法,seattr中的self.storge没有定义

obj = Foo()
obj.xx = 123


三
class Foo(object):
    def __init__(self):
        # self.storage = {}
        object.__setattr__(self,‘storage‘,{})

    def __setattr__(self, key, value):
        print(key,value,self.storage)

obj = Foo()
obj.xx = 123

 

以上是关于Flask之上下文管理的主要内容,如果未能解决你的问题,请参考以下文章

flask上下文管理之threading.local

Flask之上下文管理

Flask框架 之 上下文管理前戏

Flask框架web开发

无用之flask学习

Flask系列之源码分析