我目前正在为类实现装饰器,其中包含其与其他类关系的元数据。然而,在某些情况下,存在循环引用,虽然这不会导致类本身出现问题,但会在包含引用的装饰器中引发 NameError。
def foo(bar):
def decorator_foo(func):
return func
return decorator_foo
@foo(bar=B)
class A:
pass
@foo(bar=A)
class B:
pass
上面的示例显示了引发错误的简单方法。有没有一个干净的方法来解决这个问题?谢谢!
装饰器只是简单的函数,因此在这种情况下,您可以在定义类后调用它们:
def foo(bar):
def decorator_foo(func):
return func
return decorator_foo
class A:
pass
class B:
pass
A = foo(bar=B)
B = foo(bar=A)