1、self表示一个具体的实例本身。如果用了staticmethod,那么就可以无视这个self,将这个方法当成一个普通的函数使用。
2、cls表示这个类本身。
>>> class A(object):
def foo1(self):
print "Hello",self
@staticmethod
def foo2():
print "hello"
@classmethod
def foo3(cls):
print "hello",cls
>>> a = A()
>>> a.foo1()
Hello <__main__.A object at 0x9f6abec>
>>> A.foo1(a)
Hello <__main__.A object at 0x9f6abec>
>>> A.foo2()
hello
>>> A.foo3()
hello <class '__main__.A'>
>>> A
<class '__main__.A'>
3、whats more,类先调用__new__方法,返回该类的实例对象,这个实例对象就是__init__方法的第一个参数self,即self是__new__的返回值。