我有两个类,在本例中我将其称为 ClassA 和 ClassB。我想在 ClassA 中有一个类变量,它创建 ClassA 和 ClassB 的实例,如下例所示:
class ClassA:
CLASSVAR=ClassA(ClassB())
def __init__(self,arg):
pass
class ClassB:
def __init__(self):
pass
但是,当我尝试这样做时,出现以下错误:
NameError: name 'ClassA' is not defined
。
是否可以获取像
CLASSVAR
这样的类变量来创建 ClassA
和 ClassB
的实例而不会出现此错误?
您必须在创建类后分配它:
class ClassA:
def __init__(self, arg):
self.arg = arg
class ClassB:
pass
ClassA.CLASSVAR = ClassA(ClassB())
如果你想安抚mypy,可以为类变量提供注解:
from typing import ClassVar
class ClassA:
CLASSVAR: ClassVar['ClassA']
def __init__(self, arg):
self.arg = arg
class ClassB:
pass
ClassA.CLASSVAR = ClassA(ClassB())