我有一个名为 RiskViewer 的类,它具有许多属性。我想创建对象方法,例如 compute_price() 或 compute_risk() ,当对象属性之一发生更改时,它们会自动被调用,即在类中创建依赖关系链结构。这在 Python 中可能吗?
Class RiskViewer
def __init__ (self,
currency: str,
index: str,
tenor: str,
group: str)
@property
def currency(self):
return self._currency
@currency.setter
def currency(self, ccy: str):
self._currency = ccy
etc ....
def compute_risk():
pass
def compute_price()
pass
看看这是否有效 -
class RiskViewer:
def __init__(self, currency: str, index: str, tenor: str, group: str):
self._currency = currency
self._index = index
self._tenor = tenor
self._group = group
# Compute initial values
self.compute_price()
self.compute_risk()
@property
def currency(self):
return self._currency
@currency.setter
def currency(self, ccy: str):
self._currency = ccy
self._on_property_change()
@property
def index(self):
return self._index
@index.setter
def index(self, idx: str):
self._index = idx
self._on_property_change()
@property
def tenor(self):
return self._tenor
@tenor.setter
def tenor(self, tnr: str):
self._tenor = tnr
self._on_property_change()
@property
def group(self):
return self._group
@group.setter
def group(self, grp: str):
self._group = grp
self._on_property_change()
def _on_property_change(self):
self.compute_price()
self.compute_risk()
def compute_risk(self):
# Add logic to compute risk
print("Computing risk...")
def compute_price(self):
# Add logic to compute price
print("Computing price...")
# Example usage
rv = RiskViewer(currency="USD", index="SP500", tenor="1Y", group="Equities")
rv.currency = "EUR" # This will automatically call compute_price() and compute_risk()
rv.index = "NASDAQ"