Python中文
首页
教程
问答
标签
搜索
登录
注册
类装饰器与函数装饰器
回答此问题可获得
20
贡献值,回答如果被采纳可获得
50
分。
<p>在python中,有两种方法可以声明decorators:</p> <p><strong>基于类</strong></p> <pre><code>class mydecorator(object): def __init__(self, f): self.f = f def __call__(self, *k, **kw): # before f actions self.f(*k, **kw) # after f actions </code></pre> <p><strong>基于功能的</strong></p> <pre><code>def mydecorator(f): def decorator(*k, **kw): # before f actions f(*k, **kw) # after f actions return decorator </code></pre> <p>这些声明之间有什么区别吗? 在哪些情况下,每种方法都应该使用?</p>
0 条评论
分类:
Python问答
请先
登录
后评论
默认排序
时间排序
1 个回答
匿名
1天前
擅长:python、mysql、java
<p>事实上,没有“两条路”。只有一种方法(定义一个可调用的对象)或尽可能多的方法来创建一个可调用的对象(它可以是其他对象的方法、lambda表达式的结果、“部分”对象、任何可调用的对象)。</p> <p>函数定义是创建可调用对象的最简单方法,而且作为最简单的方法,在大多数情况下可能是最好的。使用类可以让您更容易地编写更复杂的情况(即使在最简单的情况下,它看起来也很优雅),但它的作用并不是那么明显。</p>
请先
登录
后评论
针对此问题:
更多的回答
关注
89
关注
收藏
1
收藏,
216
浏览
网友 提问于 2天前
相关Python问题
无法使用Django/mongoengine连接到MongoDB(身份验证失败)
5 回答
无法使用Django\u mssql\u后端迁移到外部hos
10 回答
无法使用Django&Python3.4连接到MySql
3 回答
无法使用Django+nginx上载媒体文件
6 回答
无法使用Django1.6导入名称模式
9 回答
无法使用Django1.7和mongodb登录管理站点
4 回答
无法使用Djangoadmin创建项目,进程使用了错误的路径,因为我事先安装了错误的Python
5 回答
无法使用Djangockedi验证CBV中的字段
10 回答
无法使用Djangocketditor上载图像(错误400)
6 回答
无法使用Djangocron进行函数调用
7 回答
无法使用Djangofiler djang上载文件
6 回答
无法使用Djangokronos
2 回答
无法使用Djangomssql provid
3 回答
无法使用Djangomssql连接到带有Django 1.11的MS SQL Server 2016
5 回答
无法使用Djangomssq迁移Django数据库
5 回答
无法使用Djangonox创建用户
4 回答
无法使用Djangopyodb从Django查询SQL Server
1 回答
无法使用Djangopython3ldap连接到ldap
9 回答
无法使用Djangoredis连接到redis
10 回答
无法使用Django中的FK创建新表
8 回答