![](/img/trans.png)
[英]How to group two lists of class objects based on an Attribute efficiently in Python?
[英]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.