Flask之路-前戏
以下内容都是学习Flask框架之前需要了解的知识点,敲黑板…
一. Flask前戏之装饰器
1.1 无参装饰器
1 | #! /usr/bin/env python |
2. 带参数的装饰器
1 | def outer(num): |
4. 扩展
这里我们引入一个functools模块,这个模块是它能将装饰过的函数的特殊属性保留,对于这个functools.wraps装饰器,相当于wrapper = functools.wraps(func)(wrapper)
1 | import functools |
二. Flask前戏之面向对象
面向对象3大特性: 继承 封装 多态
- 继承
子类继承父类1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19class Parent(object):
def __init__(self):
pass
def talk(self):
print("Say Hello!")
class Child(Parent):
def __init__(self):
pass
c1 = Child()
c1.talk()
'''
>>> Say Hello!
'''
PS: 在python3.x中类的继承遵循广度优先原则,在python2.x中遵循深度优先原则 - 封装
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
261. 示例
class Foo(object):
def __init__(self, age, name):
self.age = age
self.name = name
# 此处的18和'shuke'被封装到Foo类中
f1 = Foo(18, 'shuke')
2. 示例
class Bar(object):
def __init__(self, counter, obj):
self.age = counter
self.obj = obj
# 此处的self.obj即为Foo类的对象f1
b1 = Bar(1, f1)
3. 示例
class Bar(object):
def __init__(self, counter):
self.age = counter
self.obj = Foo(18, 'shuke')
# 此处的self.obj即为Foo类的对象
b1 = Bar(1) - 多态
鸭子模型
PS: 一个py文件中的函数可以被当作模块导入,在其他文件中调用即为封装思想
三. python中什么后面可以加括号
3.1 基本形式如下
1 | def func(arg): |
a. 函数
1 | def f1(): |
b. 类
1 | class Foo(object): |
c. 方法
1 | class F3(object): |
d. 对象
1 | class F4(object): |
延伸(函数与方法的区别)
1 | class F3(object): |
科学依据
1 | from types import MethodType, FunctionType |