General rule is: don't use names that are taken (e.g. type
, file
, int
, etc.) regardless of whether they're in a "reserved" keywords list or not (since python allows it, it's not really "reserved"). This is mainly important to avoid getting into trouble when you actually need to use the real object (without noticing that you overrode it locally).
If you really want to use one of those names, just append _
at the end (e.g. type_
).
In your case, since you're specifying type
as a class attribute, it should be considered safe since it can only be accessed through its class (self.type
or SomeProfile.type
).