Objects derived from PyObjectPlus should set this on in a clever way: impl::fixObjectType is called on an appropriate time and gets the object type through a virtual call to GetType(). If you get in a situation where ob_type seems to be NULL, try to solve the situation with a manual call to impl::fixObjectType first.
This macro is provided when there is need for a function in Python where there is no direct equivalent in C++. An example is when you would need a true polymorphic python list returned from a C++ function. Or when you need sth very Python specific returning from your function where there is no PyExportTraits::build defined for.