The Pythonic way to do this would have been to just define the keyword argument as ``categorized='uncategorized`` and then set ``self.categorized = categorized``.

The reason why we're using the ``or`` idiom with other keyword arguments is that list and dictionary objects are mutable and keyword arguments are initialized once when the function is defined, for example:

```python
def func(x=0, xs=[]):
    xs.append(x)
    return sum(xs)

func(5)  # returns 5
func(6)  # returns 6
```

See what's happening there?  When you want mutable default argument values, you should set the keyword value to ``None`` and apply the default in the code itself.  But there's no reason to do that when you have an immutable value such as a string.