py.user.nextВ питоне это не всегда обязательно и во многих случаях достаточно предоставить необходимый интерфейс.
Надо сделать общий Critter с методом, а потом от него пронаследоваться.
Питон сам так поступает
iterable …and objects of any classes you define with an __iter__() or __getitem__()
The context management protocol consists of a pair of methods that need to be provided for a context manager object to define a runtime context:и т.д.
contextmanager.__enter__()
contextmanager.__exit__(exc_type, exc_val, exc_tb)
То есть не “надо сделать общий Critter с методом”, а "желательно сделать общий Critter с методом".