I'll add my 2 cents. Keep this in mind: you need to understand how things work in the Plone CMS and why some things make sense while others don't.
Let's suppose your new portal type is a copy of the old one and what you're trying to do is to "migrate" some objects to the new portal type. In this case, you should grab the real objects, with
brain.getObject(), set the portal_type attribute,
obj.portal_type = 'bla' and, depending on how you get there, you may need to commit the transaction:
import transaction; transaction.commit(). Of course, test this first.
The reason you can't do this change on the brain: the brain is just a collection of information extracted from the real object. This info is updated whenever the real object changes. If you (could) update the brain, but not the real object, you'll end up with "wrong" info at first occasion when that object is edited.