如何将尚未定义的类的实例放入 Python 类变量中?

问题描述 投票:0回答:1

我有两个类,在本例中我将其称为 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
的实例而不会出现此错误?

python class attributes
1个回答
0
投票

您必须在创建类后分配它:

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())
© www.soinside.com 2019 - 2024. All rights reserved.