gpt4 book ai didi

python - 从上到下阅读源代码时,装饰器是否总是按照遇到的顺序调用?

转载 作者:太空宇宙 更新时间:2023-11-03 18:30:42 25 4
gpt4 key购买 nike

我试图了解装饰器是否总是按照从上到下阅读源代码时遇到的顺序调用?这是我编写的一些示例代码:

def log(func):
print(func)
return func

class A:
@log
def __init__(self):
print('__init__')

@log
def foo(self):
print('foo')

@log
def bar(self):
print('bar')

@log
def baz(self):
print('baz')

@log
def qux(self):
print('qux')

这是输出:

<function A.__init__ at 0x0000000002342840>
<function A.foo at 0x00000000023428C8>
<function A.bar at 0x0000000002342950>
<function A.baz at 0x00000000023429D8>
<function A.qux at 0x0000000002342A60>

上面的输出似乎表明装饰器是按照从上到下阅读源代码时遇到的顺序调用的?

最佳答案

在您的情况下,它们正在“按顺序”读取,但每个方法只有一个装饰器。说明它们如何被读取的一个好方法是当它们被链接或有多个时。例如:

@i_get_called_last
@i_get_called_second
@i_get_called_first
def my_decorated_function(a):
print a
return a

在此示例中,您可以看到它们实际上是从“下到上”读取的,即相对于该方法从最内层到最外层读取。

关于python - 从上到下阅读源代码时,装饰器是否总是按照遇到的顺序调用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22426374/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com