首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Python:我们真的需要装饰器的包装器吗?(重访)

Python:我们真的需要装饰器的包装器吗?(重访)
EN

Stack Overflow用户
提问于 2019-06-20 03:35:21
回答 1查看 245关注 0票数 0

在阅读了this article之后,我理解了装饰器以及为什么我们使用装饰器而不是子类。在那里,他们编写了以下示例,其中介绍了包装器的需求:

代码语言:javascript
复制
def uppercase_decorator(function):
    def wrapper():
        funct = function()
        make_uppercase = funct.upper()
        return make_uppercase

    return wrapper

然而,我可以这样写“同样的东西”(我希望你会说它不是):

代码语言:javascript
复制
def uppercase_decorator(function): #previously 'function' was called 'message' but 'function' is clearer for comparison. 
    make_uppercase = function().upper
    return make_uppercase

调用salute()时:

代码语言:javascript
复制
@uppercase_decorator
def salute():
    return 'Hi all!'

代码语言:javascript
复制
def decorateIt(fn):
    toUpper = fn().upper  
    return toUpper  

def decorateW(fn):  
    def wrapper():  
        funct = fn()  
        toUpper = funct.upper()  
        return toUpper  
    return wrapper  

import random, string  

@decorateIt  
def sayGarbage():  
    return "".join(random.choice(string.ascii_lowercase) for i in range(6))  

sayGarbage()

为什么会这样呢?

EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56674710

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档