gpt4 book ai didi

python - 在没有类实例化的情况下调用类方法的装饰器?

转载 作者:行者123 更新时间:2023-12-02 02:27:07 26 4
gpt4 key购买 nike

在下面的代码中,我为我的类 Class 方法创建了一个装饰器。我注意到即使没有创建类实例也会调用这个装饰器!并且无需在类中调用这些方法!

有什么解释吗?

装饰器:

def deco(class_name):
def inner_function(method):
print("method is = {} and class is: {}".format(method.__name__,class_name.__name__))
return method
return inner_function

class_deco

class class_deco :
def __init__(self):
pass

类别:

class Class :
def __init__(self):
pass

@deco(class_deco)
def f1(self):
pass

@deco(class_deco)
def f2(self):
pass

当我运行脚本时:

if __name__ == "__main__":
pass

我得到这个结果:

method is = f1 and class is: class_deco
method is = f2 and class is: class_deco

最佳答案

装饰器只是以下内容的语法糖

@deco(class_deco)
def f1(self):
pass

与 - 相同

f1 = deco(class_deco)(f1)

因此,一旦导入模块,此代码就会像任何其他名称声明一样运行,并且 f1 名称将替换为上面的装饰 f1。

关于python - 在没有类实例化的情况下调用类方法的装饰器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59565816/

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