Mixin: notifies when fields change; auto-wraps lists/dicts to be observable.
Example
importfletasftfromdataclassesimportdataclass@ft.observable@dataclassclassMyDataClass:x:inty:intobj=MyDataClass(1,2)deflistener(sender,field):print(f"Changed: {field} in {sender}")obj.subscribe(listener)obj.x=3obj.y=4