【发布时间】:2022-01-07 23:16:11
【问题描述】:
让我们考虑以下示例:
class SubClass:
def __init__(self):
self._param = None
@property
def param(self):
print('read param')
return self._param
@param.setter
def param(self, value):
print('set param')
self._param = value
class MainClass:
def __init__(self):
self._var = SubClass()
@property
def var(self):
print('read var')
return self._var
@var.setter
def var(self, value):
print('set var')
self._var = value
如果我这样做:
cls = MainClass()
cls.var.param = 3
我得到:
'read var'
'set param'
如何让MainClass 知道var.param 已更改?
有用的附加信息:考虑到在我的实际代码中param 不是一个标量,而是一个包含数百个元素的数组,所以我想避免创建一个副本然后只比较它们。此外,param 和 var 并不是唯一的属性。
【问题讨论】:
-
为什么首先需要这个?对我来说似乎是一个 XY 问题
-
为了简单起见,因为我需要在
MainClass中进行一些操作,但前提是var.param已更改。 -
您可以考虑使用观察者类来跟踪更改。参见例如stackoverflow.com/questions/22878220/…
标签: python-3.x class subclass