1 区别

  • 普通方法:由实例化类之后的对象调用,不能有类直接调用,在类中,至少有一个参数,就是self
  • 静态方法:可以由类直接调用,也可以有实例化类之后的对象调用,没有默认参数self,可以由其他参数
  • 类方法:可以直接由类调用,有一个默认参数,cls,即当前类。

异同点:

  • 三种方法都可以有实例化类之后的对象调用,因为实例化后的类,也具有类的属性
  • 除了普通方法外,其余两个方法,都可以直接使用为初始化(即未实例化)的类直接调用

2 代码介绍

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
#coding=utf-8
class Test():

def normal_class(self, pa):
print("this is a normal class , param is [{}]".format(pa))

@staticmethod
def static_class(pa):
print("this is static method, there is no default param. {}".format(pa))

@classmethod
def class_method(cls):
print("this is a class method, param is [{}]".format(cls))

if __name__ == '__main__':
# 普通方法调用方法
test = Test()
test.normal_class("普通方法")

## 静态方法调用方法
Test.static_class("静态方法")

## 类方法调用方法
Test.class_method()

运行结果:
this is a normal class , param is [普通方法]
this is static method, there is no default param. 静态方法
this is a class method, param is [<class ‘__main__.Test’>]

写在最后

欢迎大家关注鄙人的公众号【麦田里的守望者zhg】,让我们一起成长,谢谢。
微信公众号