title: PEP8 warning when accessing protected member from classmethod
body: <p>This one has me scratching my head. I fixed it but I still would like to know why this warns me of this problem.</p>
  
  <p>I have a protected class method <code>_parse_string</code> and I want to implement logging for it. The reason is that I want debug information available should something go awry and the user wants to know what they passed to the method. I set up a protected member in the class to reference the logger (because I don't want users of my library touching the logger object - only my class should do that.</p>
  
  <pre><code>class myClass:
      myClass._logger = logging.getLogger(__name__)
  
      @classmethod
      def _parse_string(cls, raw_string: str) -&gt; str
          cls._logger.info('Call to _parse_string method.')
          cls._logger.debug('_parse_string input: {0}'.format(raw_string))
          return raw_string.rstrip()
  </code></pre>
  
  <p>On the 5th and 6th lines of code that read <code>cls._logger.info('Call to _parse_string method.')
  cls._logger.debug('_parse_string input: {0}'.format(raw_string))</code> it gives me an warning that I am accessing a protected member.</p>
  
  <p>But I'm accessing said 'protected' member from a <code>@classmethod</code> inside the myClass class, so why the warning?</p>
  
  <p>I found the solution was to do:</p>
  
  <pre><code>class myClass:
      myClass._logger = logging.getLogger(__name__)
  
      def _parse_string(self, raw_string: str) -&gt; str
          self._logger.info('Call to _parse_string method.')
          self._logger.debug('_parse_string input: {0}'.format(raw_string))
          return raw_string.rstrip()
  </code></pre>
  
  <p>Just removing the <code>@classmethod</code> decorator and changing the cls references to self.</p>