Widget does not work with WooCommerce enabled

Woocommerce already has a widget called best_sellers, which is conflicting with the name you’re using, and it’s making your widget use the Woocommerce widget update function. Since that one also has a field called title, that field is still saving.

Add in a prefix to best_sellers in your construct function to fix the problem:

public function __construct() {
    $widget_options = array(
        'classname' => 'best_sellers',
       'description' => 'A list of products that are your best sellers'
    );
    parent::__construct("my_best_sellers", "Best Sellers", $widget_options);
}