title: Difference between Class Attributes, Instance Attributes, and Instance Methods in Python
body: <p>I know similar questions to this have been asked before, but every website seems to define these things differently, and I am trying to follow along the official documentation: 
  From what I understand so far:<br>
  - Class attributes are everything listed in the <code>class Classname:</code> code block, including the variable declarations above the <code>__init__</code> functions, static methods, class methods, and methods involving instances with <code>self</code><br>
  link for more info: <a href="https://docs.python.org/2/tutorial/classes.html#class-objects" rel="nofollow">https://docs.python.org/2/tutorial/classes.html#class-objects</a><br>
  - Instance attributes are both: 1.) every function listed in the <code>class Classname:</code> code block so everything other than the variable declarations above the <code>__init__</code> function &amp; 2.) data attributes which is when we use <code>instance.attr</code> and set that equal to some value<br>
  link for more info: <a href="https://docs.python.org/2/tutorial/classes.html#instance-objects" rel="nofollow">https://docs.python.org/2/tutorial/classes.html#instance-objects</a></p>
  
  <p>Assuming everything I wrote above is correct, I would say an Instance method is any function in the <code>class Classname:</code> code block since we can apply each method to the instance objects or it could just be the functions that involve <code>self</code></p>
  
  <p>I'm not sure what I'm understanding incorrectly, but the terminology of the python documentation is totally different from the other sites I've seen. Any help would be greatly appreciated. Thanks!</p>