静态方法是指:
尽管定义和使用上和普通的函数完全相同,但通常要在某个类型中定义,;
通过 类型 和 实例 都能调用;
定义静态方法时不用额外指定第一个参数,Python也不会隐式地传递任何内容作为第一个参数;
使用装饰器 @staticmethod 来定义静态方法;
>>> class A(object):
@staticmethod
def f(x, y): return x + y
>>> A.f(1, 9)
10
>>> a = A()
>>> a.f(1,9)
10
类方法是指:
定义时的第一个参数为一个类型 cls ,调用类方法时Python自动地将调用该方法的类型(或者调用该方法的实例所属的类型)传递给类方法的首个参数;
通过 类型 和 实例 都能够调用;
使用装饰器 @classmethod 定义类方法
>>> class A(object):
@classmethod
def f(cls, x):
print 'class name: %s.' % cls.__name__
print 'the argument you passed in: %s.' %x
>>> A.f('hello')
class name: A.
the argument you passed in: hello.
>>> a = A()
>>> a.f('world')
class name: A.
the argument you passed in: world.
类方法的最大特点是定义时的第一个参数代表调用该方法的类型或实例所属的类型,而Python会隐式地将这个类型对象传给类方法。静态方法和类方法都是类级方法,不同于实例方法。