将类用作装饰器

时间:2018-11-04 07:27:00

标签: python-3.x

我正在跟踪:A Curious Course on Coroutines and Concurrency来学习协程,

这是指令中的Task示例

class Task: #behave as a decorator
    taskid = 0

    def __init__(self, target):
        Task.taskid += 1
        self.tid = Task.taskid
        self.target = target
        self.sendval = None 

    def run(self):
        return self.target.send(self.sendval)

# a very simple generator
def foo():
    print("part 1")
    yield
    print("part")
    yield

运行并通过

In [28]: t1.run()                                                                                                 
part 1

In [29]: t1.run()                                                                                                 
part 2

它实际上是一个装饰器

taskid = 0 #set taskid as  a global variable
def Task(target, value):
    def enclosure(value):
        target.taskid += 1
        return target.send(value)
   return enclosure 

只需将.send重命名为.run

如何调用这样的应用程序将类用作闭包,
它是正式的专业术语还是图案名称?

0 个答案:

没有答案