old_contents: from django.forms.widgets import Select, TextInput
  from django.utils.safestring import mark_safe
  
  
  class NoNameWidget(object):
  
      def _update_to_noname_class_name(self, name, kwargs_dict):
          if "attrs" in kwargs_dict:
              if "class" in kwargs_dict["attrs"]:
                  kwargs_dict["attrs"]["class"] += " %s" % (name.replace("_", "-"), )
              else:
                  kwargs_dict["attrs"].update({'class': name.replace("_", "-")})
          else:
              kwargs_dict["attrs"] = {'class': name.replace("_", "-")}
  
          return kwargs_dict
  
      def _strip_name_attr(self, widget_string, name):
          return widget_string.replace("name=\"%s\"" % (name,), "")
  
      class Media:
          css = {
              'all': ('zebra/card-form.css',)
          }
          js = ('zebra/card-form.js', 'https://js.stripe.com/v1/')
  
  
  
  class NoNameTextInput(TextInput, NoNameWidget):
  
      def render(self, name, *args, **kwargs):
          kwargs = self._update_to_noname_class_name(name, kwargs)
          return mark_safe(self._strip_name_attr(super(NoNameTextInput, self).render(name, *args, **kwargs), name))
  
  
  class NoNameSelect(Select, NoNameWidget):
  
      def render(self, name, *args, **kwargs):
          kwargs = self._update_to_noname_class_name(name, kwargs)
          return mark_safe(self._strip_name_attr(super(NoNameSelect, self).render(name, *args, **kwargs), name))
  
new_contents: from django.forms.widgets import Select, TextInput
  from django.utils.safestring import mark_safe
  
  
  class NoNameWidget(object):
  
      def _update_to_noname_class_name(self, name, kwargs_dict):
          name_class = name.replace("_", "-")
  
          current_classes = ''
          if "class" in self.attrs:
              current_classes = self.attrs["class"]
  
          if "attrs" in kwargs_dict:
              if "class" in kwargs_dict["attrs"]:
                  kwargs_dict["attrs"]["class"] += (" %s" % name.replace("_", "-"))
              else:
                  kwargs_dict["attrs"].update({'class': name.replace("_", "-")})
          else:
              kwargs_dict["attrs"] = {'class': name.replace("_", "-")}
  
          if current_classes != '':
              kwargs_dict["attrs"]["class"] += ' %s' % current_classes
  
          return kwargs_dict
  
      def _strip_name_attr(self, widget_string, name):
          return widget_string.replace("name=\"%s\"" % (name,), "")
  
      class Media:
          css = {
              'all': ('zebra/card-form.css',)
          }
          js = ('zebra/card-form.js', 'https://js.stripe.com/v1/')
  
  
  
  class NoNameTextInput(TextInput, NoNameWidget):
  
      def render(self, name, *args, **kwargs):
          kwargs = self._update_to_noname_class_name(name, kwargs)
          return mark_safe(self._strip_name_attr(super(NoNameTextInput, self).render(name, *args, **kwargs), name))
  
  
  class NoNameSelect(Select, NoNameWidget):
  
      def render(self, name, *args, **kwargs):
          kwargs = self._update_to_noname_class_name(name, kwargs)
          return mark_safe(self._strip_name_attr(super(NoNameSelect, self).render(name, *args, **kwargs), name))
  
subject: Allow css classes to come from self.attrs without being overwritten.