簡體   English   中英

B 中 A 的不同實例(Python)

[英]Different instances of A in B (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 中有 2 個不同的 A 實例?

定義B后,它的屬性a屬於 class 本身,而不是每個單獨的實例。 你需要做這樣的事情:

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

為每個B獲取A的單獨實例。

您需要在每個實例的基礎上初始化它,而不是像現在這樣在 class 級別初始化它:

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

您正在使用相當於 static 變量的值。 嘗試這個:

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

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

您在第一次解析A()變量時將其初始化為 static class 變量。 每個B()實例都有一個A()實例,它應該在B()__init__

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

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM