如果您添加几行打印行,这实际上很容易在操作中看到:
print('Deocrator is being defined')
def deco(cls):
print('Decorator is called')
cls.decorated = True
return cls
print('Foo is being defined')
@deco
class Foo:
print('Foo class attributes are being set')
def __init__(self):
print('Foo is being instantiated')
print('Foo class is being referenced in main script')
print(f'Foo is decorated: {Foo.decorated}')
print('Foo instance is being created in main script')
print(Foo())
Deocrator is being defined
Foo is being defined
Foo class attributes are being set
Decorator is called # <--- decoration happens immediately after definition of Foo
Foo class is being referenced in main script
Foo is decorated: True
Foo instance is being created in main script
Foo is being instantiated
<__main__.Foo object at 0x00789150>
简言之,答案很像@jornsharpe所说的,它已经发生了。只是想想视觉效果会有帮助。