# file: runme.py # This file illustrates the cross language polymorphism using directors. import example class PyCallback(example.Callback): def __init__(self): example.Callback.__init__(self) def run(self): print("PyCallback.run()") # Create an Caller instance caller = example.Caller() # Add a simple C++ callback (caller owns the callback, so # we disown it first by clearing the .thisown flag). print("Adding and calling a normal C++ callback") print("----------------------------------------") callback = example.Callback() callback.thisown = 0 caller.setCallback(callback) caller.call() caller.delCallback() print("") print("Adding and calling a Python callback") print("------------------------------------") # Add a Python callback (caller owns the callback, so we # disown it first by calling __disown__). caller.setCallback(PyCallback().__disown__()) caller.call() caller.delCallback() print("") print("Adding and calling another Python callback") print("------------------------------------------") # Let's do the same but use the weak reference this time. callback = PyCallback().__disown__() caller.setCallback(callback) caller.call() caller.delCallback() # All done. print("") print("python exit")