Python的实例方法、静态方法、类方法
0X00 实例方法
Python中的实例方法是在面向对象编程中用到的最多的方法类型了。 实例方法 从字面理解就可以,就是说这个方法是属于实例的。每次实例化一个对象出来,这个对象都会拥有这个方法。从下面代码中就可以看得出来,这里我定义了一个实例方法’get_name()’,定义实例方法不需要任何特殊的修饰符。
1 | #!/usr/bin/python |
从运行结果可以看出来,针对每一个实例,调用实例方法的输出是不同的,也就可以证明这个方法是属于某个实例的。
1 | 小明 |
0X01 静态方法
静态方法用的也很多,比如我们写正则表达式的时候经常会用到表达式的编译,一般都是这么写的’re.compile()’这里就是一个静态方法。可以看到我们在调用编译方法的时候是并没有实例化一个re对象的。所以可以知道 静态方法 就是不需要实例化对象即可调用的方法。下面有一个例子,例子中还是上面的Student类,但是定义了一个静态方法’say_hello()’,因为这是一个静态方法,所以不需要实例化对象即可调用。正因为这些特点,在定义静态方法的时候没有一个默认的参数self。
1 | #!/usr/bin/python |
运行结果如下。我个人觉得静态方法的最大作用就是实现一些工具类,比如某些固定的重复的操作之类的。
1 | hello,world |
0X02 类方法
使用类方法需要弄清楚类中属性的种类。类里有两种属性,一种是 类属性 一种是 实例属性 。顾名思义,类属性就是说这个属性是属于类的,这个类的所有实例共享着一个属性。实例属性就是属于实例的属性,每个实例的实例属性间不共享。下面这个例子里可以看到,类属性和实例属性是可以重名的,但是调用的时候要用’cls’或者’self’来制定到底调用的是哪个属性。下面的例子中有一个类属性’name’和一个实例属性’name’。
1 | #!/usr/bin/python |
通过运行结果可以清晰地看出类属性的使用方式。运行结果如下。首先实例化一个对象,获取了a的实例属性和Student的类属性,然后调用了实例方法和类方法对两个属性重新赋值,最后再输出一次。
1 | 默认的类属性 |