B中A的不同实例(Python)

2024-05-21 02:05:40 发布

您现在位置:Python中文网/ 问答频道 /正文

在这种情况下,b1和b2都有相同的a

class A:
    def __init__(self):
        self.var=1

class B:
    a=A()
    def __init__(self):
        pass

b1=B()
b2=B()
b1.a.var=2 #changing "var" in b1 would also change it in b2
print(b2.a.var) # prints 2 

我应该怎么做才能在B中有两个不同的A实例?你知道吗


Tags: inselfinitvardef情况itpass
3条回答

你使用的是一个静态变量。试试这个:

class A:
    def __init__(self):
        self.var = 1

class B:
    def __init__(self):
        self.a = A()

B按原样定义时,它的属性a属于类本身,而不是每个实例。你需要这样做:

class B:
    def __init__(self):
        self.a = A()

为每个B获取A的单独实例。你知道吗

您需要在每个实例的基础上对其进行初始化,而不是像现在这样在类级别进行初始化:

class B:
    def __init__(self):
        self.a = A()

相关问题 更多 >