非常に慎重に制御しない限り、「離れた場所でのアクション」/突然変異/副作用を持つのは貧弱な形です.
とはいえ、命令型言語を使用すると、本当にやりたい場合は次のようにできます。ここでは、python の [プロパティの getter と setter ]を使用します。
MARRIED_SET = set()
def updateMarriedSet(changedPerson):
if hasattr(changedPerson,'married') and changedPerson.married==Person.MARRIED:
MARRIED_SET.add(changedPerson)
else:
MARRIED_SET.discard(changedPerson)
class Person(object):
...
@property
def married(self):
"""The person is married"""
return self._married
@married.setter
def married(self, newStatus):
self._married = newStatus
updateMarriedSet(self)
@married.deleter
def married(self):
del self._married
updateMarriedSet(self)
これはおそらく、getMarriedPeople() へのアクセスが償却された O(1) 時間ではなく O(1) 時間で実行されるようにするのに役立つかもしれないと想像できます。