I checked the Python style guide, and I found no specific references to having instance variable names with reserved words e.g.
Avoid it if possible.
You can get and set such attributes via
setattr, but they can't be accessed with ordinary dot syntax (something like
obj.class is a syntax error), so they're a pain to use.
As Aurora0001 mentioned in a comment, a convention if you "need" to use them is to append an underscore. The most common reason to "need" to have such attributes is that they're generated programatically from an external data source.
type is not a keyword, so you can do
self.type just fine.)