>>> class Class(object):... def __init__(self):... self.i = 0... def instance_method(self):... self.i += 1... print self.i... c = 0... @classmethod... def class_method(cls):... cls.c += 1... print cls.c... @staticmethod... def static_method(s):... s += 1... print s... >>> a = Class()>>> a.class_method()1>>> Class.class_method() # The class shares this value across instances2>>> a.instance_method()1>>> Class.instance_method() # The class cannot use an instance methodTraceback (most recent call last): File "<stdin>", line 1, in <module>TypeError: unbound method instance_method() must be called with Class instance as first argument (got nothing instead)>>> Class.instance_method(a)2>>> b = 0>>> a.static_method(b)1>>> a.static_method(a.c) # Static method does not have direct access to >>> # class or instance properties.3>>> Class.c # a.c above was passed by value and not by reference.2>>> a.c2>>> a.c = 5 # The connection between the instance>>> Class.c # and its class is weak as seen here.2>>> Class.class_method()3>>> a.c5