title: 'NoneType' object does not support item assignment occur when defined __getattribute__ method
body: <p>I'm a newcomer to Python. Recently, I'v been reading about the builtin method of Python class. Here is the problem:</p>
  
  <pre><code>class Test:
      def __setattr__(self, key, value):
          self.__dict__[key] = value
  
      def __getattribute__(self, item):
          pass
  
  if __name__ == '__main__':
          T = Test()
          setattr(T, 'xx', 33)
          print(getattr(T, 'xx'))
  </code></pre>
  
  <p>When I run this script, I got error message:</p>
  
  <pre><code>TypeError: 'NoneType' object does not support item assignment
  </code></pre>
  
  <p>But when I removed the <code>__getattribute__</code> method, everything worked fine.
  I have no idea about how this happened. Why does <code>__getattribute__</code> method affect the data type of my object <code>T</code>?</p>