Python 如何在decorator函数中访问类变量
是否可以创建一个不带参数的decorator函数来访问类变量。我发现了类似的问题,但它们总是指实例变量,而不是类变量,通常只有在调用修饰方法时才访问这些变量 我想在类定义中引用类变量,而不是在实例化之后 我想到了其他解决方案,比如创建一个元类,但我只想使用一个类和一个装饰器,没有任何争论 我能够实现所需的功能,而无需使用以下方式的装饰与预期的结果Python 如何在decorator函数中访问类变量,python,class,oop,python-decorators,Python,Class,Oop,Python Decorators,是否可以创建一个不带参数的decorator函数来访问类变量。我发现了类似的问题,但它们总是指实例变量,而不是类变量,通常只有在调用修饰方法时才访问这些变量 我想在类定义中引用类变量,而不是在实例化之后 我想到了其他解决方案,比如创建一个元类,但我只想使用一个类和一个装饰器,没有任何争论 我能够实现所需的功能,而无需使用以下方式的装饰与预期的结果 B类: b=3 resetFuns=[] 定义初始化(self,x): self.x=x self.y=x+self.b def foo(self):
B类:
b=3
resetFuns=[]
定义初始化(self,x):
self.x=x
self.y=x+self.b
def foo(self):
self.y=self.x+self.b
resetFuns.append(foo)
def重置(自):
对于self.resetFuns中的f:
f(自我)
测试=B(4)
打印(test.y)
B.B=9
打印(test.y)
test.reset()
打印(test.y)
7.
7.
13
但我想用一个类似的装饰器
A类:
b=3
resetFuns=[]##我要访问的类变量
定义初始化(self,x):
self.x=x
self.y=x+self.b
def重置装饰器(func):
resetFuns.append(func)##不能像这样引用resetFuns
返回函数
@重置装饰器
def foo(self):
self.y=self.x+self.b
def重置(自):
对于重置函数中的f:
f(自我)
类似于:
def resetdecorreator(resetFuns):
def重置装饰器(func):
resetFuns.append(func)
返回函数
返回重置装饰器
B类:
b=3
resetFuns=[]
resetDecorator=resetDecoratorCreator(resetFuns)
定义初始化(self,x):
self.x=x
self.y=x+self.b
@重置装饰器
def foo(self):
self.y=self.x+self.b
def重置(自):
对于self.resetFuns中的f:
f(自我)
将为您提供所需的服务。类似于:
def resetdecorreator(resetFuns):
def重置装饰器(func):
resetFuns.append(func)
返回函数
返回重置装饰器
B类:
b=3
resetFuns=[]
resetDecorator=resetDecoratorCreator(resetFuns)
定义初始化(self,x):
self.x=x
self.y=x+self.b
@重置装饰器
def foo(self):
self.y=self.x+self.b
def重置(自):
对于self.resetFuns中的f:
f(自我)
会帮你找到你想要的