@remi nice read! I don't often see opportunities for SimpleDelegator, so it's nice to be reminded.

A couple of things stood out to me:
- you don't need to define or use `teacher`
In the delegated class, calling `max_number_of_students` will be delegated to the wrapped object anyway. I personally prefer this to messing with dunder methods.

- I'd use/mention Forwardable.
In a similar way to your home-brewed decorator, wrap the object and def_delegator _ONLY_ the methods you need. Lower interface