【发布时间】:2021-05-04 17:53:32
【问题描述】:
我有一个类装饰器,它有如下两个参数:
def decoratorB(x: int, y: int):
def inner(cls):
def no_wrap(*args, **kwargs):
return cls(*args, **kwargs)
no_wrap.x = x
no_wrap.y = y
return no_wrap
return inner
我用它来装饰一个类:
@decoratorB(x=100, y=-100)
class ClassB():
def func(self, name):
pass
如何从ClassB 的对象中获取 x 和 y 的值?
obj = ClassB()
提前致谢。
【问题讨论】:
-
你确实意识到你正在用一个函数替换你的类,对吧?
ClassB成为函数no_wrap的另一个名称,因此x和y可以作为ClassB.x和ClassB.y访问。obj是原始类的一个实例,由函数ClassB返回,并且不包含对x或y的引用。