  
          def get_extra_info(self, obj):
              return ...  # Calculate some data to return.
      """
      def __init__(self, method_attr=None, **kwargs):
          self.method_attr = method_attr
          kwargs['source'] = '*'
          kwargs['read_only'] = True
          super(SerializerMethodField, self).__init__(**kwargs)
  
      def to_representation(self, value):
 
</s> remove         method_attr = self.method_attr
        if method_attr is None:
            method_attr = 'get_{field_name}'.format(field_name=self.field_name)
        method = getattr(self.parent, method_attr)
 </s> add         method = getattr(self.parent, self.method_name) </s> remove         assert self._kwargs.get('source') != field_name, (
 </s> add         assert self.source != field_name, (
    def __init__(self, method_name=None, **kwargs):
        self.method_name = method_name
  
          def get_extra_info(self, obj):
              return ...  # Calculate some data to return.
      """
    def __init__(self, method_name=None, **kwargs):
        self.method_name = method_name
    def __init__(self, method_name=None, **kwargs):
        self.method_name = method_name
          kwargs['source'] = '*'
          kwargs['read_only'] = True
          super(SerializerMethodField, self).__init__(**kwargs)
  
      def to_representation(self, value):
keep keep keep keep replace replace keep keep keep keep keep
 Check for redundant  on SerializerMethodField 
rest_framework/fields.py