#!/usr/bin/python
import objc
from Foundation import NSObject,NSKeyValueObservingOptionNew,NSKeyValueChangeNewKey
class MyClass(NSObject):
base = objc.ivar("base", objc._C_INT)
power = objc.ivar("power", objc._C_INT)
result = objc.ivar("result", objc._C_INT)
def result(self):
return self.base ** self.power
MyClass.setKeys_triggerChangeNotificationsForDependentKey_(
[u"base", u"power"],
u"result"
)
class Observer(NSObject):
def observeValueForKeyPath_ofObject_change_context_(self, path, object, changeDescription, context):
print 'path "%s" was changed to "%s".' % (path, changeDescription[NSKeyValueChangeNewKey])
myInstance = MyClass.new()
observer = Observer.new()
myInstance.addObserver_forKeyPath_options_context_(observer, "result", NSKeyValueObservingOptionNew, 0)
myInstance.addObserver_forKeyPath_options_context_(observer, "base", NSKeyValueObservingOptionNew, 0)
myInstance.addObserver_forKeyPath_options_context_(observer, "power", NSKeyValueObservingOptionNew, 0)
myInstance.setValue_forKey_(2, "base")
myInstance.power = 4
print "%d ** %d == %d" % (myInstance.base, myInstance.valueForKey_("power"), myInstance.result())
|