【发布时间】:2021-05-07 16:29:44
【问题描述】:
我有一堂课如下:
class A:
def __init__(self, x, y):
self.x = x
self.y = y
def __call__(self, func):
def wrapper():
print("decorated", self.x, self.y)
func()
return wrapper
现在如果我想用这个类来装饰函数:
@A(4, 5)
def fn():
print("original function")
fn()
输出:
decorated 4 5
original function
问题:
-
既然在
@A(3, 4)中调用了__init__类的构造函数,那么创建的类A的实例到哪里去了?有没有办法引用它? -
如何在不调用
fn()的情况下访问类外的属性self.x, self.y? (我想要fn.x或fn.y之类的东西,但它们不起作用)
【问题讨论】:
标签: python function class object decorator