One thing I'd like to see in this change is the use of a predicate function here, rather than a flag. Maybe something like the below?

```
def has_menu(self):
    return self.menu_items is not None
```

A predicate method has the benefit of never needing a flag to be set (which as a dev, I've forgotten in the past). It always returns the required value, based on the information currently available.