both. I use context properties as singleton (for example to interface database/api ) and qmlRegisterType for QAbstractlistModel derived class. It's pretty usable except for testing but it'sanother question :-) I declare all in a main.py file. I also add an instance of context_property to app (QApplication) so I can access it every where without importing (jsut retrieving app via QApplication.instance() and use app.ddb.myslot()