  
          # Every new serializer is created with a clone of the field instances.
          # This allows users to dynamically modify the fields on a serializer
          # instance without affecting every other serializer class.
          self.fields = BindingDict(self)
          for key, value in self._get_base_fields().items():
              self.fields[key] = value
  
          self.validators = getattr(getattr(self, 'Meta', None), 'validators', [])
  
      def _get_base_fields(self):
          return copy.deepcopy(self._declared_fields)
  
      def get_initial(self):
          if self._initial_data is not None:
              return ReturnDict([
 
</s> remove     def __init__(self, *args, **kwargs):
        super(Serializer, self).__init__(*args, **kwargs)

 </s> add     @property
    def fields(self):
        if not hasattr(self, '_fields'):
            self._fields = BindingDict(self)
            for key, value in self.get_fields().items():
                self._fields[key] = value
        return self._fields

    def get_fields(self): </s> remove         validators = []
 </s> add         validators = getattr(getattr(self, 'Meta', None), 'validators', []) </s> remove     def _get_base_fields(self):
 </s> add     def get_fields(self):
  
          # Every new serializer is created with a clone of the field instances.
          # This allows users to dynamically modify the fields on a serializer
          # instance without affecting every other serializer class.







          return copy.deepcopy(self._declared_fields)
  
      def get_initial(self):
          if self._initial_data is not None:
              return ReturnDict([
keep keep keep keep replace replace replace replace replace replace replace keep keep keep keep keep
 Lazy loading of fields and validators. Closes #1963. 
rest_framework/serializers.py