首页 > 解决方案 > 是否可以在 Python attr 中自引用类型

问题描述

我想做这样的事情:

@attr.s
class A(object):
    a_dict = attr.ib(factory=Dict, type=Dict[str, A], validator=optional(instance_of(Dict)))

可以按 as 输入,type=Dict但我想知道您是否可以自我引用 like type=Dict[str, cls],但它可能会受到 Python 可能性的限制。

谢谢。

标签: pythonpython-2.7python-attrs

解决方案


问题是class A(object): A导致NameError: name 'A' is not defined. 这意味着在定义块中创建类时,不能通过其名称引用类。

我认为要在打字时解决这个问题,可以使用字符串来代替:type=Dict[str, 'A']. 我记得看到这是如何进行前向引用的,但这可能不正确。


推荐阅读