<p>What is the difference between the following class methods?</p>

<p>Is it that one is static and the other is not?</p>

<pre><code>class Test(object):
  def method_one(self):
    print "Called method_one"

  def method_two():
    print "Called method_two"

a_test = Test()
a_test.method_one()
a_test.method_two()
</code></pre>

When you call a class member, Python automatically uses a reference to the object as the first parameter. The variable
```
self
```
actually means nothing, it's just a coding convention. You could call it
```
gargaloo
```
if you wanted. That said, the call to
```
method_two
```
would raise a
```
TypeError
```
, because Python is automatically trying to pass a parameter (the reference to its parent object) to a method that was defined as having no parameters.
To actually make it work, you could append this to your class definition:
```
```
method_two = staticmethod(method_two)
```
```
or you could use the
```
@staticmethod
```
function decorator
.