Python的Methods

目录

作者:杨冬 欢迎转载,也请保留这段声明。谢谢!
出处:https://andyyoung01.github.io/http://andyyoung01.16mb.com/

Python的Methods(方法)是定义在类的内部的函数。Python中通常有3中类型的方法:实例方法,类方法,静态方法。本文就来简单了解一下。

下面来看一个实例代码:

1
2
3
4
5
6
7
8
9
10
11
class Foo(object):
def instance_method(self,arg):
statements
@classmethod
def class_method(cls,arg):
statements
@staticmethod
def static_method(arg):
statements

  • 实例方法是操作一个给定类实例的方法。上述代码中的第一个函数instance_method为实例方法。它的第一个参数通常为self,这个参数是类实例本身。每次运行一个实例方法时,程序会自动将实例作为第一个参数传入到方法,这通常是隐式进行的。举个例子:
    1
    2
    f=Foo() #创建Foo类的实例f
    f.instance_method(37) #调用实例方法,实例本身作为第一个参数隐式传入该方法

还有另外一种调用实例方法的方式,这种调用方法就可以看出参数self的作用:

1
2
f=Foo() #创建Foo类的实例f
Foo.instance_method(f,37) #将实例作为第一个参数self传入实例方法

  • 类方法是将一个类以对象方式操作。上述代码中的第二个函数class_method为类方法。它的第一个参数通常为cls,这个参数是类对象。@classmethod 是一个装饰器函数,用来标示一个方法为类方法。如果一个方法被标示为类方法,则该方法可被类对象调用(如 Foo.class_method()),也可以被类的实例对象调用(如 Foo().class_method())。类被继承后,子类也可以调用父类的类方法,但是第一个参数传入的是子类的类对象。
  • 静态方法就是一个普通的函数,碰巧它被封装在某个类当中,它并没有以实例或类对象作为它的第一个参数。上述代码中的第三个函数static_method为静态方法。@staticmethod是一个装饰器函数,用来标示一个方法为静态方法。 静态方法即可以被类调用,也可以被类的实例对象调用。