簡體   English   中英

根據類屬性更改依賴對象

[英]Change dependent objects based on a class attribute

例如,如果我有兩個類:

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

  def update(self, val):
     self.a = val;
class B:
  def __init__(self, default = A()):
     self.b = default.a;

使用它們: object_a = A(); object_b = B(object_a); object_a = A(); object_b = B(object_a);

然后,我想使用object_a.update(update_val)更新object_a.a屬性,但同時對所有其他從屬對象進行更新( object_b.b也將更新為update_val )。

如何在Python中執行此操作,是否有“內置”方式?

我已經有了一些手動解決方案,例如:

class A:
  def __init__(self):
     self.a = 1;
     self.dependent = None; 

  def update(self, val):
     self.a = val;
     if self.dependent != None:
        self.dependent.b = self.a;

class B:
  def __init__(self, default = A()):
     default.dependent = self;
     self.b = default.a;

完成要求的一種方法是使用可變對象(例如列表)來存儲屬性的數據。 由於對象將引用列表,因此更改列表的值將共享給兩個對象。

這是一個使用列表存儲基礎值但保留屬性行為.a.b

class A:
    def __init__(self):
        self._a = [1]

    def update(self, val):
        self._a[0] = val

    @property
    def a(self):
        return self._a[0]

class B:
    def __init__(self, default):
        self._b = default._a

    @property
    def b(self):
        return self._b[0]

a = A()
b = B(a)
a.update(4)

b.b
# returns:
4

暫無
暫無

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

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